1)(10 points) A directed graph is strongly connected if there is a (directed) path from every node to every other node. Show that in a directed strongly connected graph containing more than one node, no node can have a zero indegree or a zero outdegree

Based on the definition of a strongly connected diagraph, every pair of nodes has a directed path in each direction. That is, assume A and B are two of the nodes in a diagraph, there exists a path from A to B and another path from B to A. There is no isolated node in a strongly connected diagraph, and the underlying graph of such diagraph is a clique. Therefore, beetween every pair of neighboring nodes, there should be an outdegree, indegree, or both.

To prove that no node can have a zero outdegree or indegree in a strongly connected diagraph, we have to demonstrate two cases are infeasible:

  • (1) a strongly connected diagraph that has a node with zero indegree
  • (2) a strongly connected diagraph that has a node with zero outdegree

To exemplify, we can write a function that creates a diagraph with 2 - 10 nodes and one of the nodes (A) has zero indegree/outdegree. Then, we test that it is impossible to go from one of the other nodes to A or from A to one of the other nodes. If the above is true, it means that (1) and (2) are impossible, and that in a directed strongly connected diagraph containing more than one node, no node can have a zero indegree or a zero outdegree.

In [12]:
import networkx as nx
import matplotlib.pyplot as plt
import random
import string
In [18]:
# case(1): a strongly connected diagraph that has a node (A) with zero indegree
def draw_directed_graph1():
    # Generate a random number of nodes between 2 and 10
    num_nodes = random.randint(2, 10)
    # Create a list of node names using uppercase alphabets
    node_names = list(string.ascii_uppercase[:num_nodes])

    # Create a directed graph
    G = nx.DiGraph()

    # Add nodes to the graph
    G.add_nodes_from(node_names)
    
    # Add an outdegree to A
    G.add_edge('A', random.choice(node_names[1:]))

    # Add edges to other nodes ensuring they have at least one indegree and one outdegree
    for node in node_names[1:]:
        # Ensure every other nodes has at least one incoming edge
        # Avoid self-loops
        choices = [n for n in node_names[1:] if n != node]
        G.add_edge(random.choice(choices), node)
        # Ensure every other nodes has at least one outgoing edge
        G.add_edge(node, random.choice(choices))

        # Optionally add more edges, avoiding self-loops and edges to/from A
        for _ in range(random.randint(0, num_nodes - 2)):
            potential_edges = [(u, v) for u in node_names for v in node_names if u != v and u != 'A' and v != 'A']
            if potential_edges:
                G.add_edge(*random.choice(potential_edges))

    # Draw the graph
    pos = nx.spring_layout(G)
    nx.draw(G, pos, with_labels=True, node_color='lightblue', node_size=2000, font_size=10, arrowstyle='->', arrowsize=20)
    plt.title("Directed Graph with 'A' having zero indegree")
    plt.show()

    # Check if there's a path from any node to 'A', and from 'A' to any other node
    path_to_A = any(nx.has_path(G, node, 'A') for node in node_names if node != 'A')
    path_from_A = any(nx.has_path(G, 'A', node) for node in node_names if node != 'A')

    return path_to_A, path_from_A

# Draw the graph and check for paths
paths = draw_directed_graph1()
print("Path to 'A':", paths[0], "\nPath from 'A':", paths[1])
if paths[0]==False or paths[1]==False: 
    print("The diagraph is not strongly connected.")
Path to 'A': False 
Path from 'A': True
The diagraph is not strongly connected.
In [19]:
# case(2): a strongly connected diagraph that has a node (A) with zero outdegree
def draw_directed_graph2():
    # Generate a random number of nodes between 2 and 10
    num_nodes = random.randint(2, 10)
    # Create a list of node names using uppercase alphabets
    node_names = list(string.ascii_uppercase[:num_nodes])

    # Create a directed graph
    G = nx.DiGraph()

    # Add nodes to the graph
    G.add_nodes_from(node_names)
    
    # Add an indegree to A
    G.add_edge(random.choice(node_names[1:]), 'A')

    # Add edges to other nodes ensuring they have at least one indegree and one outdegree
    for node in node_names[1:]:
        # Ensure every other nodes has at least one incoming edge
        # Avoid self-loops
        choices = [n for n in node_names[1:] if n != node]
        G.add_edge(random.choice(choices), node)
        # Ensure every other nodes has at least one outgoing edge
        G.add_edge(node, random.choice(choices))

        # Optionally add more edges, avoiding self-loops and edges to/from A
        for _ in range(random.randint(0, num_nodes - 2)):
            potential_edges = [(u, v) for u in node_names for v in node_names if u != v and u != 'A' and v != 'A']
            if potential_edges:
                G.add_edge(*random.choice(potential_edges))

    # Draw the graph
    pos = nx.spring_layout(G)
    nx.draw(G, pos, with_labels=True, node_color='lightblue', node_size=2000, font_size=10, arrowstyle='->', arrowsize=20)
    plt.title("Directed Graph with 'A' having zero outdegree")
    plt.show()

    # Check if there's a path from any node to 'A', and from 'A' to any other node
    path_to_A = any(nx.has_path(G, node, 'A') for node in node_names if node != 'A')
    path_from_A = any(nx.has_path(G, 'A', node) for node in node_names if node != 'A')

    return path_to_A, path_from_A

# Draw the graph and check for paths
paths = draw_directed_graph2()
print("Path to 'A':", paths[0], "\nPath from 'A':", paths[1])
if paths[0]==False or paths[1]==False: 
    print("The diagraph is not strongly connected.")
Path to 'A': True 
Path from 'A': False
The diagraph is not strongly connected.

2)(10 points) Show that every tree is a bipartite graph.

image-2.png

The above graph is an example to prove a tree is a bipartite. To show a graph is bipartite, all the nodes must be divided into two sets where no node in the same set is adjacent. We start from node a and put this node in set A. Since b and c are a's children (adjacent to a), so they must be put in set B. b's children, d and e, are adjacent to b, so they must not be put in the same set as b. Hence, d, e are moved to set A. Same for c's children f and g. If we keep going until all the nodes have been assigned one of the sets, we can find out the tree graph is indeed a biparite.

Since a tree is a layered graph, we can always divide the nodes into two sets. If we call the root node (a in the example) as the first layer and its children as the second layer, so on so forth, the nodes in the odd layers and ones in the even layers are the two groups of the bipartite.

3)(10 points) A directed acyclic graph (DAG) is a directed graph without cycles (the underlying graph may have cycles, so it is not a tree). Show that a DAG has a labeling of its nodes (that is a labeling 1, …, n of its nodes) such that every arc goes from a lower-numbered node to a higher-numbered node. (You need to find a way to do it, and also show that is always possible) (These DAGs are ubiquitous--- in neural networks, Hidden-Markov models (used for speech recognition) and in general, graphical models.)

The below codes prove that for a DAG, it is possible to label the nodes in sequential numbers that every arc goes from a smaller number to a larger one. We first create a random DAG and label the nodes according to rule. Then, we verify the statement by looping through all the arc and verify the numbering of the nodes in each arc is increasing. The codes will return True if the statement stands.

In [29]:
def create_dag():
    # Generate a random number of nodes between 2 and 10, for better visual representation
    num_nodes = random.randint(2, 10)

    # Create a directed graph
    G = nx.DiGraph()

    # Add nodes to the graph
    G.add_nodes_from(range(num_nodes))

    # Add edges to ensure the graph is a DAG
    for _ in range(num_nodes * 2):  # Number of edges is arbitrarily chosen
        node1, node2 = random.sample(range(num_nodes), 2)
        if not nx.has_path(G, node2, node1):  # Ensure adding the edge doesn't create a cycle
            G.add_edge(node1, node2)

    # Relabel nodes with sequential numbers
    num_order = list(nx.topological_sort(G))
    mapping = {node: i for i, node in enumerate(num_order)}
    G = nx.relabel_nodes(G, mapping)

    # Draw the graph
    pos = nx.spring_layout(G)
    nx.draw(G, pos, with_labels=True, node_color='lightblue', edge_color='gray', node_size=1000, arrows=True)
    plt.title("Directed Acyclic Graph with Ordering")
    plt.show()
    
    return(G)

# Verify that all edges are correctly directed
for edge in create_dag().edges():
    if edge[0] > edge[1]:
        result = False
        break
    else: result = True
print("All edges are correctly directed from lower-numbered to higher-numbered nodes: ", result)
All edges are correctly directed from lower-numbered to higher-numbered nodes:  True
In [31]:
# test again with a larger number of nodes
def create_dag2():
    # Generate a random number of nodes between 2 and a large number (2^10)
    num_nodes = random.randint(2, 2**10)

    # Create a directed graph
    G = nx.DiGraph()

    # Add nodes to the graph
    G.add_nodes_from(range(num_nodes))

    # Add edges to ensure the graph is a DAG
    for _ in range(num_nodes * 2):  # Number of edges is arbitrarily chosen
        node1, node2 = random.sample(range(num_nodes), 2)
        if not nx.has_path(G, node2, node1):  # Ensure adding the edge doesn't create a cycle
            G.add_edge(node1, node2)

    # Relabel nodes with sequential numbers
    num_order = list(nx.topological_sort(G))
    mapping = {node: i for i, node in enumerate(num_order)}
    G = nx.relabel_nodes(G, mapping)
    
    print("Number of nodes: ", G.number_of_nodes())
    return G

# Verify that all edges are correctly directed
for edge in create_dag2().edges():
    if edge[0] > edge[1]:
        result = False
        break
    else: result = True
print("All edges are correctly directed from lower-numbered to higher-numbered nodes: ", result)
Number of nodes:  253
All edges are correctly directed from lower-numbered to higher-numbered nodes:  True

4)This is based on the data file called asset_prices.csv. This represents the price movements of a set of assets (bonds, stocks etc., their description is quite irrelevant here). Economists and investors are very interested in the correlation of asset prices, both to understand risk, as well as (hopefully) find correlation to lagged asset prices for investing. A correlation matrix with N assets is an N × N matrix of correlations.

a. (10 points) Calculate the correlation matrix (you may have to use your Stats and knowledge here; you can use any built-in function in Python)

In [33]:
import numpy as np
import pandas as pd
In [34]:
df = pd.read_csv("C:/cindy/ICL/network analytics/Homework 1 Individual BA NA 2023/asset_prices.csv")
df.head()
Out[34]:
Date EOD~BND.11 EOD~DBC.11 EOD~DIA.11 EOD~EEM.11 EOD~EFA.11 EOD~EMB.11 EOD~EPP.11 EOD~EWG.11 EOD~EWI.11 ... EOD~VGK.11 EOD~VPL.11 EOD~VXX.11 EOD~XLB.11 EOD~XLE.11 EOD~XLF.11 EOD~XLK.11 EOD~XLU.11 EOD~CSJ.11 EOD~FXF.11
0 2017-11-08 81.83 16.40 235.46 46.78 69.87 114.60 47.69 33.18 30.95 ... 58.20 72.77 33.53 58.70 69.82 26.25 64.01 55.70 104.96 94.5100
1 2017-11-07 81.89 16.43 235.42 46.56 69.64 114.65 47.22 33.07 31.09 ... 58.17 72.20 33.52 58.64 70.16 26.38 63.66 55.66 105.01 94.5400
2 2017-11-06 81.86 16.53 235.41 46.86 69.90 115.26 47.20 33.34 31.22 ... 58.67 71.98 33.34 58.58 70.25 26.75 63.63 55.00 105.00 94.7500
3 2017-11-03 81.80 16.22 235.18 46.34 69.80 115.42 47.09 33.39 31.22 ... 58.58 71.88 33.66 58.83 68.68 26.78 63.49 55.21 105.00 94.4400
4 2017-11-02 81.73 16.12 234.96 46.58 69.91 116.15 47.31 33.50 31.43 ... 58.69 71.89 33.71 58.86 68.48 26.89 62.99 55.01 105.04 94.6299

5 rows × 40 columns

In [35]:
df.drop('Date', axis=1, inplace=True)

#calculate the correlation matrix
corr = df.corr()
corr
Out[35]:
EOD~BND.11 EOD~DBC.11 EOD~DIA.11 EOD~EEM.11 EOD~EFA.11 EOD~EMB.11 EOD~EPP.11 EOD~EWG.11 EOD~EWI.11 EOD~EWJ.11 ... EOD~VGK.11 EOD~VPL.11 EOD~VXX.11 EOD~XLB.11 EOD~XLE.11 EOD~XLF.11 EOD~XLK.11 EOD~XLU.11 EOD~CSJ.11 EOD~FXF.11
EOD~BND.11 1.000000 -0.822062 0.794479 0.069905 0.114368 0.912854 0.119582 0.099310 -0.482615 0.638039 ... -0.037230 0.536324 -0.900317 0.597031 -0.613705 0.689425 0.845532 0.941027 0.934951 -0.769985
EOD~DBC.11 -0.822062 1.000000 -0.574282 0.349666 0.200079 -0.600426 0.325952 0.228763 0.600429 -0.472528 ... 0.333239 -0.215966 0.773717 -0.238640 0.895370 -0.509694 -0.644009 -0.717165 -0.713552 0.870505
EOD~DIA.11 0.794479 -0.574282 1.000000 0.468724 0.563945 0.917934 0.519725 0.568437 -0.070294 0.897045 ... 0.412195 0.875397 -0.883305 0.898652 -0.346392 0.975872 0.988677 0.910599 0.917660 -0.657030
EOD~EEM.11 0.069905 0.349666 0.468724 1.000000 0.906563 0.383581 0.968244 0.871560 0.609441 0.553773 ... 0.872187 0.788827 -0.162012 0.743330 0.522937 0.488016 0.403966 0.239615 0.227668 0.224999
EOD~EFA.11 0.114368 0.200079 0.563945 0.906563 1.000000 0.412868 0.881808 0.961832 0.722791 0.701312 ... 0.975473 0.852729 -0.274274 0.759922 0.333035 0.596364 0.504831 0.291689 0.308123 0.135446
EOD~EMB.11 0.912854 -0.600426 0.917934 0.383581 0.412868 1.000000 0.449375 0.408301 -0.245520 0.785165 ... 0.257371 0.776831 -0.917891 0.815172 -0.346823 0.842485 0.939693 0.947970 0.968140 -0.655235
EOD~EPP.11 0.119582 0.325952 0.519725 0.968244 0.881808 0.449375 1.000000 0.859786 0.533985 0.559117 ... 0.831654 0.806764 -0.229427 0.790734 0.529161 0.540090 0.449015 0.305822 0.293515 0.170135
EOD~EWG.11 0.099310 0.228763 0.568437 0.871560 0.961832 0.408301 0.859786 1.000000 0.670526 0.664514 ... 0.943557 0.830771 -0.232118 0.742909 0.318852 0.593605 0.502004 0.297612 0.325287 0.151760
EOD~EWI.11 -0.482615 0.600429 -0.070294 0.609441 0.722791 -0.245520 0.533985 0.670526 1.000000 0.120915 ... 0.834734 0.285055 0.339941 0.172235 0.536058 0.011219 -0.128671 -0.333470 -0.332439 0.588681
EOD~EWJ.11 0.638039 -0.472528 0.897045 0.553773 0.701312 0.785165 0.559117 0.664514 0.120915 1.000000 ... 0.548281 0.933750 -0.799630 0.838301 -0.249518 0.898535 0.885168 0.713208 0.773878 -0.522373
EOD~EWQ.11 0.133298 0.180010 0.579963 0.830074 0.959346 0.431202 0.813360 0.964138 0.715726 0.656312 ... 0.957204 0.814066 -0.266488 0.718769 0.247110 0.597796 0.527563 0.334069 0.361204 0.126692
EOD~EWU.11 -0.517597 0.742558 -0.122190 0.731485 0.728727 -0.246228 0.672423 0.673132 0.896797 0.075002 ... 0.821343 0.299800 0.386653 0.232442 0.761248 -0.055186 -0.197699 -0.373542 -0.389307 0.690239
EOD~FXB.11 -0.881718 0.785573 -0.815277 -0.010376 -0.047338 -0.858135 -0.098489 -0.097932 0.579336 -0.653444 ... 0.134844 -0.535225 0.884302 -0.575261 0.587652 -0.760275 -0.846165 -0.880120 -0.914238 0.838066
EOD~FXC.11 -0.764207 0.959362 -0.539431 0.409094 0.227213 -0.564192 0.358177 0.235279 0.589891 -0.442876 ... 0.357525 -0.178929 0.757370 -0.200309 0.851797 -0.495695 -0.609985 -0.662610 -0.680516 0.858121
EOD~FXE.11 -0.751606 0.934234 -0.555548 0.300953 0.178322 -0.563021 0.258460 0.225434 0.596749 -0.503935 ... 0.339213 -0.241947 0.777214 -0.284865 0.737566 -0.529786 -0.605043 -0.642191 -0.645994 0.876336
EOD~FXI.11 0.297078 -0.145443 0.540373 0.714284 0.708423 0.410806 0.639610 0.598766 0.337544 0.727237 ... 0.606870 0.740698 -0.400239 0.678539 0.086844 0.568849 0.503931 0.335457 0.325568 -0.138245
EOD~FXY.11 -0.215348 0.587160 -0.254213 0.199016 0.014197 -0.050179 0.253768 0.122715 0.055390 -0.318839 ... 0.073925 -0.079584 0.333551 -0.097576 0.503652 -0.329023 -0.265113 -0.182349 -0.121594 0.515819
EOD~GDX.11 0.235482 0.260990 0.208053 0.412808 0.224695 0.397513 0.504812 0.300218 -0.088655 0.081988 ... 0.191500 0.301804 -0.123559 0.395343 0.384495 0.110501 0.178966 0.287926 0.301502 0.198218
EOD~GLD.11 0.082024 0.397393 0.056570 0.440848 0.253518 0.230380 0.490394 0.331595 0.088205 -0.052560 ... 0.277139 0.204842 0.095048 0.258024 0.409309 -0.047593 0.031461 0.148379 0.136570 0.411007
EOD~IEF.11 0.960502 -0.887364 0.616693 -0.161149 -0.115984 0.772624 -0.123896 -0.142085 -0.614841 0.462854 ... -0.250644 0.309003 -0.805882 0.370280 -0.728639 0.493679 0.688562 0.839497 0.822259 -0.767665
EOD~IYR.11 0.955606 -0.765263 0.856419 0.192315 0.242269 0.915085 0.257621 0.215767 -0.375769 0.704389 ... 0.084490 0.628472 -0.911824 0.716636 -0.502344 0.778801 0.881168 0.949289 0.909633 -0.750171
EOD~JNK.11 0.445421 -0.022564 0.778771 0.820003 0.808507 0.732292 0.866058 0.809576 0.292240 0.766475 ... 0.703327 0.907781 -0.570855 0.920337 0.232295 0.799863 0.729748 0.596253 0.625980 -0.180673
EOD~LQD.11 0.971305 -0.694091 0.866714 0.266759 0.286353 0.964510 0.323333 0.282643 -0.352670 0.710935 ... 0.133318 0.672902 -0.896247 0.742058 -0.450059 0.774881 0.896336 0.957108 0.952372 -0.693004
EOD~SLV.11 -0.354167 0.724506 -0.256180 0.371996 0.187288 -0.141498 0.416171 0.279668 0.235227 -0.240594 ... 0.240493 0.014046 0.403814 0.005046 0.694764 -0.285405 -0.307128 -0.277922 -0.240663 0.644029
EOD~SPY.11 0.842149 -0.641248 0.991233 0.415816 0.517151 0.935603 0.467515 0.502180 -0.123878 0.895104 ... 0.358526 0.848230 -0.927519 0.877744 -0.392401 0.963235 0.991927 0.927931 0.932395 -0.704327
EOD~TIP.11 0.859502 -0.457060 0.753160 0.390606 0.312750 0.916770 0.470817 0.297403 -0.310658 0.603516 ... 0.167172 0.652469 -0.789489 0.734690 -0.167651 0.662339 0.773236 0.855883 0.845312 -0.504442
EOD~TLT.11 0.936742 -0.849735 0.571482 -0.136222 -0.123104 0.731014 -0.105875 -0.155546 -0.601886 0.415551 ... -0.252825 0.277254 -0.752814 0.365316 -0.671258 0.450654 0.638300 0.805797 0.756771 -0.729281
EOD~USO.11 -0.867886 0.986548 -0.664995 0.266093 0.123862 -0.682872 0.227297 0.129020 0.595750 -0.549693 ... 0.270583 -0.315690 0.824281 -0.340152 0.865064 -0.598733 -0.723483 -0.789460 -0.793365 0.881490
EOD~UUP.11 0.675114 -0.898963 0.518790 -0.313187 -0.187701 0.489625 -0.273305 -0.226168 -0.569004 0.479315 ... -0.345297 0.212514 -0.720817 0.252331 -0.710915 0.514331 0.560829 0.577542 0.575982 -0.860378
EOD~VGK.11 -0.037230 0.333239 0.412195 0.872187 0.975473 0.257371 0.831654 0.943557 0.834734 0.548281 ... 1.000000 0.726352 -0.101834 0.634106 0.400804 0.446705 0.351284 0.146801 0.152965 0.296861
EOD~VPL.11 0.536324 -0.215966 0.875397 0.788827 0.852729 0.776831 0.806764 0.830771 0.285055 0.933750 ... 0.726352 1.000000 -0.675383 0.930537 0.013313 0.873740 0.841634 0.672990 0.709966 -0.314635
EOD~VXX.11 -0.900317 0.773717 -0.883305 -0.162012 -0.274274 -0.917891 -0.229427 -0.232118 0.339941 -0.799630 ... -0.101834 -0.675383 1.000000 -0.706347 0.498880 -0.842539 -0.914515 -0.899269 -0.930061 0.808017
EOD~XLB.11 0.597031 -0.238640 0.898652 0.743330 0.759922 0.815172 0.790734 0.742909 0.172235 0.838301 ... 0.634106 0.930537 -0.706347 1.000000 0.051290 0.893472 0.852025 0.745800 0.733184 -0.364143
EOD~XLE.11 -0.613705 0.895370 -0.346392 0.522937 0.333035 -0.346823 0.529161 0.318852 0.536058 -0.249518 ... 0.400804 0.013313 0.498880 0.051290 1.000000 -0.274287 -0.426726 -0.510594 -0.519703 0.697664
EOD~XLF.11 0.689425 -0.509694 0.975872 0.488016 0.596364 0.842485 0.540090 0.593605 0.011219 0.898535 ... 0.446705 0.873740 -0.842539 0.893472 -0.274287 1.000000 0.951554 0.827935 0.840891 -0.633096
EOD~XLK.11 0.845532 -0.644009 0.988677 0.403966 0.504831 0.939693 0.449015 0.502004 -0.128671 0.885168 ... 0.351284 0.841634 -0.914515 0.852025 -0.426726 0.951554 1.000000 0.931938 0.944955 -0.705373
EOD~XLU.11 0.941027 -0.717165 0.910599 0.239615 0.291689 0.947970 0.305822 0.297612 -0.333470 0.713208 ... 0.146801 0.672990 -0.899269 0.745800 -0.510594 0.827935 0.931938 1.000000 0.960408 -0.725899
EOD~CSJ.11 0.934951 -0.713552 0.917660 0.227668 0.308123 0.968140 0.293515 0.325287 -0.332439 0.773878 ... 0.152965 0.709966 -0.930061 0.733184 -0.519703 0.840891 0.944955 0.960408 1.000000 -0.728065
EOD~FXF.11 -0.769985 0.870505 -0.657030 0.224999 0.135446 -0.655235 0.170135 0.151760 0.588681 -0.522373 ... 0.296861 -0.314635 0.808017 -0.364143 0.697664 -0.633096 -0.705373 -0.725899 -0.728065 1.000000

39 rows × 39 columns

In [36]:
#extracts the indices from the correlation matrix, which are the stocks
assets = corr.index.values

#Changes from dataframe to matrix, so it is easier to create a graph with networkx
cor_m = np.asmatrix(corr)

#Crates graph using the data of the correlation matrix
G = nx.from_numpy_array(cor_m)

#relabels the nodes to match the  stocks names
G = nx.relabel_nodes(G,lambda x: assets[x])

#shows the edges with their corresponding weights
G.edges(data=True)
Out[36]:
EdgeDataView([('EOD~BND.11', 'EOD~BND.11', {'weight': 1.0}), ('EOD~BND.11', 'EOD~DBC.11', {'weight': -0.8220619436026627}), ('EOD~BND.11', 'EOD~DIA.11', {'weight': 0.7944792033336266}), ('EOD~BND.11', 'EOD~EEM.11', {'weight': 0.06990468475525749}), ('EOD~BND.11', 'EOD~EFA.11', {'weight': 0.11436755413278744}), ('EOD~BND.11', 'EOD~EMB.11', {'weight': 0.912853678835749}), ('EOD~BND.11', 'EOD~EPP.11', {'weight': 0.11958187104282161}), ('EOD~BND.11', 'EOD~EWG.11', {'weight': 0.09931047806248133}), ('EOD~BND.11', 'EOD~EWI.11', {'weight': -0.482614942994126}), ('EOD~BND.11', 'EOD~EWJ.11', {'weight': 0.6380390720471781}), ('EOD~BND.11', 'EOD~EWQ.11', {'weight': 0.13329848603979297}), ('EOD~BND.11', 'EOD~EWU.11', {'weight': -0.5175970947436096}), ('EOD~BND.11', 'EOD~FXB.11', {'weight': -0.8817178954853574}), ('EOD~BND.11', 'EOD~FXC.11', {'weight': -0.7642072305344247}), ('EOD~BND.11', 'EOD~FXE.11', {'weight': -0.7516055475963491}), ('EOD~BND.11', 'EOD~FXI.11', {'weight': 0.2970784882290974}), ('EOD~BND.11', 'EOD~FXY.11', {'weight': -0.21534764861122743}), ('EOD~BND.11', 'EOD~GDX.11', {'weight': 0.23548213220155612}), ('EOD~BND.11', 'EOD~GLD.11', {'weight': 0.0820240400076562}), ('EOD~BND.11', 'EOD~IEF.11', {'weight': 0.9605018939659017}), ('EOD~BND.11', 'EOD~IYR.11', {'weight': 0.9556061490182591}), ('EOD~BND.11', 'EOD~JNK.11', {'weight': 0.44542102245292603}), ('EOD~BND.11', 'EOD~LQD.11', {'weight': 0.9713047549245901}), ('EOD~BND.11', 'EOD~SLV.11', {'weight': -0.3541673654019954}), ('EOD~BND.11', 'EOD~SPY.11', {'weight': 0.8421485381740329}), ('EOD~BND.11', 'EOD~TIP.11', {'weight': 0.8595015875544844}), ('EOD~BND.11', 'EOD~TLT.11', {'weight': 0.9367419880464612}), ('EOD~BND.11', 'EOD~USO.11', {'weight': -0.867886227092277}), ('EOD~BND.11', 'EOD~UUP.11', {'weight': 0.6751137704467409}), ('EOD~BND.11', 'EOD~VGK.11', {'weight': -0.03722973930013944}), ('EOD~BND.11', 'EOD~VPL.11', {'weight': 0.5363244824069487}), ('EOD~BND.11', 'EOD~VXX.11', {'weight': -0.9003170926999343}), ('EOD~BND.11', 'EOD~XLB.11', {'weight': 0.5970305062531086}), ('EOD~BND.11', 'EOD~XLE.11', {'weight': -0.6137051124082094}), ('EOD~BND.11', 'EOD~XLF.11', {'weight': 0.6894250867249624}), ('EOD~BND.11', 'EOD~XLK.11', {'weight': 0.8455323203519611}), ('EOD~BND.11', 'EOD~XLU.11', {'weight': 0.9410268190624562}), ('EOD~BND.11', 'EOD~CSJ.11', {'weight': 0.9349505798732045}), ('EOD~BND.11', 'EOD~FXF.11', {'weight': -0.7699848389713053}), ('EOD~DBC.11', 'EOD~DBC.11', {'weight': 1.0}), ('EOD~DBC.11', 'EOD~DIA.11', {'weight': -0.5742815959735695}), ('EOD~DBC.11', 'EOD~EEM.11', {'weight': 0.3496658356533499}), ('EOD~DBC.11', 'EOD~EFA.11', {'weight': 0.20007941364996937}), ('EOD~DBC.11', 'EOD~EMB.11', {'weight': -0.6004255007374161}), ('EOD~DBC.11', 'EOD~EPP.11', {'weight': 0.3259515340574235}), ('EOD~DBC.11', 'EOD~EWG.11', {'weight': 0.22876323528267145}), ('EOD~DBC.11', 'EOD~EWI.11', {'weight': 0.6004287929160584}), ('EOD~DBC.11', 'EOD~EWJ.11', {'weight': -0.47252817098766403}), ('EOD~DBC.11', 'EOD~EWQ.11', {'weight': 0.18000963742507567}), ('EOD~DBC.11', 'EOD~EWU.11', {'weight': 0.7425577626936343}), ('EOD~DBC.11', 'EOD~FXB.11', {'weight': 0.7855732761667459}), ('EOD~DBC.11', 'EOD~FXC.11', {'weight': 0.9593617171959323}), ('EOD~DBC.11', 'EOD~FXE.11', {'weight': 0.9342340711075623}), ('EOD~DBC.11', 'EOD~FXI.11', {'weight': -0.14544341866827099}), ('EOD~DBC.11', 'EOD~FXY.11', {'weight': 0.5871601620001462}), ('EOD~DBC.11', 'EOD~GDX.11', {'weight': 0.26099002503706586}), ('EOD~DBC.11', 'EOD~GLD.11', {'weight': 0.39739349685556014}), ('EOD~DBC.11', 'EOD~IEF.11', {'weight': -0.8873639662584337}), ('EOD~DBC.11', 'EOD~IYR.11', {'weight': -0.7652629539261755}), ('EOD~DBC.11', 'EOD~JNK.11', {'weight': -0.022564110367460158}), ('EOD~DBC.11', 'EOD~LQD.11', {'weight': -0.6940906703082091}), ('EOD~DBC.11', 'EOD~SLV.11', {'weight': 0.7245059677460054}), ('EOD~DBC.11', 'EOD~SPY.11', {'weight': -0.6412475022643256}), ('EOD~DBC.11', 'EOD~TIP.11', {'weight': -0.45706033087433234}), ('EOD~DBC.11', 'EOD~TLT.11', {'weight': -0.8497353615917296}), ('EOD~DBC.11', 'EOD~USO.11', {'weight': 0.9865483850923882}), ('EOD~DBC.11', 'EOD~UUP.11', {'weight': -0.8989632862170439}), ('EOD~DBC.11', 'EOD~VGK.11', {'weight': 0.3332386219562613}), ('EOD~DBC.11', 'EOD~VPL.11', {'weight': -0.21596577400474004}), ('EOD~DBC.11', 'EOD~VXX.11', {'weight': 0.7737165958203354}), ('EOD~DBC.11', 'EOD~XLB.11', {'weight': -0.23863955501147227}), ('EOD~DBC.11', 'EOD~XLE.11', {'weight': 0.8953702601781153}), ('EOD~DBC.11', 'EOD~XLF.11', {'weight': -0.5096942637643738}), ('EOD~DBC.11', 'EOD~XLK.11', {'weight': -0.6440092511016706}), ('EOD~DBC.11', 'EOD~XLU.11', {'weight': -0.7171653860254705}), ('EOD~DBC.11', 'EOD~CSJ.11', {'weight': -0.713552008537764}), ('EOD~DBC.11', 'EOD~FXF.11', {'weight': 0.8705048235859045}), ('EOD~DIA.11', 'EOD~DIA.11', {'weight': 1.0}), ('EOD~DIA.11', 'EOD~EEM.11', {'weight': 0.4687237711293347}), ('EOD~DIA.11', 'EOD~EFA.11', {'weight': 0.5639447593034207}), ('EOD~DIA.11', 'EOD~EMB.11', {'weight': 0.9179339964903175}), ('EOD~DIA.11', 'EOD~EPP.11', {'weight': 0.5197250851626034}), ('EOD~DIA.11', 'EOD~EWG.11', {'weight': 0.5684373436066796}), ('EOD~DIA.11', 'EOD~EWI.11', {'weight': -0.07029418266194681}), ('EOD~DIA.11', 'EOD~EWJ.11', {'weight': 0.8970451037357432}), ('EOD~DIA.11', 'EOD~EWQ.11', {'weight': 0.5799626604107206}), ('EOD~DIA.11', 'EOD~EWU.11', {'weight': -0.12218951874448554}), ('EOD~DIA.11', 'EOD~FXB.11', {'weight': -0.8152769527359707}), ('EOD~DIA.11', 'EOD~FXC.11', {'weight': -0.539430688525325}), ('EOD~DIA.11', 'EOD~FXE.11', {'weight': -0.555548087392257}), ('EOD~DIA.11', 'EOD~FXI.11', {'weight': 0.5403733341437178}), ('EOD~DIA.11', 'EOD~FXY.11', {'weight': -0.25421342042536427}), ('EOD~DIA.11', 'EOD~GDX.11', {'weight': 0.208052965315476}), ('EOD~DIA.11', 'EOD~GLD.11', {'weight': 0.05656964177656555}), ('EOD~DIA.11', 'EOD~IEF.11', {'weight': 0.6166931086854747}), ('EOD~DIA.11', 'EOD~IYR.11', {'weight': 0.8564194810286543}), ('EOD~DIA.11', 'EOD~JNK.11', {'weight': 0.7787711769213106}), ('EOD~DIA.11', 'EOD~LQD.11', {'weight': 0.8667138554907075}), ('EOD~DIA.11', 'EOD~SLV.11', {'weight': -0.2561799747866602}), ('EOD~DIA.11', 'EOD~SPY.11', {'weight': 0.991232952223839}), ('EOD~DIA.11', 'EOD~TIP.11', {'weight': 0.753159646265582}), ('EOD~DIA.11', 'EOD~TLT.11', {'weight': 0.571482052571588}), ('EOD~DIA.11', 'EOD~USO.11', {'weight': -0.6649952894569846}), ('EOD~DIA.11', 'EOD~UUP.11', {'weight': 0.5187903830941611}), ('EOD~DIA.11', 'EOD~VGK.11', {'weight': 0.4121947649060137}), ('EOD~DIA.11', 'EOD~VPL.11', {'weight': 0.875396840823605}), ('EOD~DIA.11', 'EOD~VXX.11', {'weight': -0.8833045264514118}), ('EOD~DIA.11', 'EOD~XLB.11', {'weight': 0.8986524921261532}), ('EOD~DIA.11', 'EOD~XLE.11', {'weight': -0.3463924214875118}), ('EOD~DIA.11', 'EOD~XLF.11', {'weight': 0.975871638550408}), ('EOD~DIA.11', 'EOD~XLK.11', {'weight': 0.9886770885328434}), ('EOD~DIA.11', 'EOD~XLU.11', {'weight': 0.9105985290120748}), ('EOD~DIA.11', 'EOD~CSJ.11', {'weight': 0.917660435353119}), ('EOD~DIA.11', 'EOD~FXF.11', {'weight': -0.6570302930939513}), ('EOD~EEM.11', 'EOD~EEM.11', {'weight': 1.0}), ('EOD~EEM.11', 'EOD~EFA.11', {'weight': 0.9065634762367781}), ('EOD~EEM.11', 'EOD~EMB.11', {'weight': 0.3835807956142485}), ('EOD~EEM.11', 'EOD~EPP.11', {'weight': 0.9682442739107642}), ('EOD~EEM.11', 'EOD~EWG.11', {'weight': 0.8715602636861033}), ('EOD~EEM.11', 'EOD~EWI.11', {'weight': 0.6094406147613463}), ('EOD~EEM.11', 'EOD~EWJ.11', {'weight': 0.5537733655253947}), ('EOD~EEM.11', 'EOD~EWQ.11', {'weight': 0.8300744866193859}), ('EOD~EEM.11', 'EOD~EWU.11', {'weight': 0.7314847343358597}), ('EOD~EEM.11', 'EOD~FXB.11', {'weight': -0.010376296489584106}), ('EOD~EEM.11', 'EOD~FXC.11', {'weight': 0.4090938289428233}), ('EOD~EEM.11', 'EOD~FXE.11', {'weight': 0.30095280733760427}), ('EOD~EEM.11', 'EOD~FXI.11', {'weight': 0.7142842061045636}), ('EOD~EEM.11', 'EOD~FXY.11', {'weight': 0.1990159947523583}), ('EOD~EEM.11', 'EOD~GDX.11', {'weight': 0.4128081745405022}), ('EOD~EEM.11', 'EOD~GLD.11', {'weight': 0.44084771104434467}), ('EOD~EEM.11', 'EOD~IEF.11', {'weight': -0.1611487128156066}), ('EOD~EEM.11', 'EOD~IYR.11', {'weight': 0.19231521520252673}), ('EOD~EEM.11', 'EOD~JNK.11', {'weight': 0.8200030825859568}), ('EOD~EEM.11', 'EOD~LQD.11', {'weight': 0.26675921570651545}), ('EOD~EEM.11', 'EOD~SLV.11', {'weight': 0.37199584545566267}), ('EOD~EEM.11', 'EOD~SPY.11', {'weight': 0.41581553114223524}), ('EOD~EEM.11', 'EOD~TIP.11', {'weight': 0.3906057373219344}), ('EOD~EEM.11', 'EOD~TLT.11', {'weight': -0.1362215969084996}), ('EOD~EEM.11', 'EOD~USO.11', {'weight': 0.2660933171497556}), ('EOD~EEM.11', 'EOD~UUP.11', {'weight': -0.3131865208046945}), ('EOD~EEM.11', 'EOD~VGK.11', {'weight': 0.8721866668491937}), ('EOD~EEM.11', 'EOD~VPL.11', {'weight': 0.7888268659124384}), ('EOD~EEM.11', 'EOD~VXX.11', {'weight': -0.16201192721140945}), ('EOD~EEM.11', 'EOD~XLB.11', {'weight': 0.7433298380701077}), ('EOD~EEM.11', 'EOD~XLE.11', {'weight': 0.5229368480001165}), ('EOD~EEM.11', 'EOD~XLF.11', {'weight': 0.48801572684992517}), ('EOD~EEM.11', 'EOD~XLK.11', {'weight': 0.4039656941635436}), ('EOD~EEM.11', 'EOD~XLU.11', {'weight': 0.2396152583500524}), ('EOD~EEM.11', 'EOD~CSJ.11', {'weight': 0.2276678691996217}), ('EOD~EEM.11', 'EOD~FXF.11', {'weight': 0.22499886600319832}), ('EOD~EFA.11', 'EOD~EFA.11', {'weight': 1.0}), ('EOD~EFA.11', 'EOD~EMB.11', {'weight': 0.41286844802595984}), ('EOD~EFA.11', 'EOD~EPP.11', {'weight': 0.8818079366875247}), ('EOD~EFA.11', 'EOD~EWG.11', {'weight': 0.9618315110735136}), ('EOD~EFA.11', 'EOD~EWI.11', {'weight': 0.7227907434028408}), ('EOD~EFA.11', 'EOD~EWJ.11', {'weight': 0.7013120203896817}), ('EOD~EFA.11', 'EOD~EWQ.11', {'weight': 0.9593460493975985}), ('EOD~EFA.11', 'EOD~EWU.11', {'weight': 0.728726787416842}), ('EOD~EFA.11', 'EOD~FXB.11', {'weight': -0.047337632241496154}), ('EOD~EFA.11', 'EOD~FXC.11', {'weight': 0.2272131211123748}), ('EOD~EFA.11', 'EOD~FXE.11', {'weight': 0.178321695272403}), ('EOD~EFA.11', 'EOD~FXI.11', {'weight': 0.708423485781824}), ('EOD~EFA.11', 'EOD~FXY.11', {'weight': 0.014196803700506843}), ('EOD~EFA.11', 'EOD~GDX.11', {'weight': 0.22469505298055858}), ('EOD~EFA.11', 'EOD~GLD.11', {'weight': 0.25351822609186847}), ('EOD~EFA.11', 'EOD~IEF.11', {'weight': -0.11598399942302054}), ('EOD~EFA.11', 'EOD~IYR.11', {'weight': 0.2422686599161544}), ('EOD~EFA.11', 'EOD~JNK.11', {'weight': 0.8085074756770856}), ('EOD~EFA.11', 'EOD~LQD.11', {'weight': 0.2863532260096268}), ('EOD~EFA.11', 'EOD~SLV.11', {'weight': 0.1872883815102733}), ('EOD~EFA.11', 'EOD~SPY.11', {'weight': 0.5171513675998897}), ('EOD~EFA.11', 'EOD~TIP.11', {'weight': 0.31274990378446127}), ('EOD~EFA.11', 'EOD~TLT.11', {'weight': -0.12310446458078578}), ('EOD~EFA.11', 'EOD~USO.11', {'weight': 0.12386241567737172}), ('EOD~EFA.11', 'EOD~UUP.11', {'weight': -0.1877008424343496}), ('EOD~EFA.11', 'EOD~VGK.11', {'weight': 0.9754726465102069}), ('EOD~EFA.11', 'EOD~VPL.11', {'weight': 0.852728810044407}), ('EOD~EFA.11', 'EOD~VXX.11', {'weight': -0.274273747680409}), ('EOD~EFA.11', 'EOD~XLB.11', {'weight': 0.7599215727871778}), ('EOD~EFA.11', 'EOD~XLE.11', {'weight': 0.3330348208110798}), ('EOD~EFA.11', 'EOD~XLF.11', {'weight': 0.5963637815002084}), ('EOD~EFA.11', 'EOD~XLK.11', {'weight': 0.5048310998791826}), ('EOD~EFA.11', 'EOD~XLU.11', {'weight': 0.291689180468534}), ('EOD~EFA.11', 'EOD~CSJ.11', {'weight': 0.3081232934153785}), ('EOD~EFA.11', 'EOD~FXF.11', {'weight': 0.13544560950283627}), ('EOD~EMB.11', 'EOD~EMB.11', {'weight': 1.0}), ('EOD~EMB.11', 'EOD~EPP.11', {'weight': 0.4493750709098348}), ('EOD~EMB.11', 'EOD~EWG.11', {'weight': 0.40830125863654143}), ('EOD~EMB.11', 'EOD~EWI.11', {'weight': -0.24551976061826278}), ('EOD~EMB.11', 'EOD~EWJ.11', {'weight': 0.7851645162629057}), ('EOD~EMB.11', 'EOD~EWQ.11', {'weight': 0.4312023774178545}), ('EOD~EMB.11', 'EOD~EWU.11', {'weight': -0.24622797535000332}), ('EOD~EMB.11', 'EOD~FXB.11', {'weight': -0.8581349149721496}), ('EOD~EMB.11', 'EOD~FXC.11', {'weight': -0.5641918034625465}), ('EOD~EMB.11', 'EOD~FXE.11', {'weight': -0.5630212384846629}), ('EOD~EMB.11', 'EOD~FXI.11', {'weight': 0.4108063984483149}), ('EOD~EMB.11', 'EOD~FXY.11', {'weight': -0.05017934397428309}), ('EOD~EMB.11', 'EOD~GDX.11', {'weight': 0.3975125632192582}), ('EOD~EMB.11', 'EOD~GLD.11', {'weight': 0.23038049168332259}), ('EOD~EMB.11', 'EOD~IEF.11', {'weight': 0.772624127020749}), ('EOD~EMB.11', 'EOD~IYR.11', {'weight': 0.9150853794824036}), ('EOD~EMB.11', 'EOD~JNK.11', {'weight': 0.7322923650511731}), ('EOD~EMB.11', 'EOD~LQD.11', {'weight': 0.9645096398488886}), ('EOD~EMB.11', 'EOD~SLV.11', {'weight': -0.14149766657313845}), ('EOD~EMB.11', 'EOD~SPY.11', {'weight': 0.9356031594717457}), ('EOD~EMB.11', 'EOD~TIP.11', {'weight': 0.9167697011752317}), ('EOD~EMB.11', 'EOD~TLT.11', {'weight': 0.7310140229153536}), ('EOD~EMB.11', 'EOD~USO.11', {'weight': -0.6828716926188574}), ('EOD~EMB.11', 'EOD~UUP.11', {'weight': 0.48962476269407873}), ('EOD~EMB.11', 'EOD~VGK.11', {'weight': 0.2573708278941465}), ('EOD~EMB.11', 'EOD~VPL.11', {'weight': 0.776830920177077}), ('EOD~EMB.11', 'EOD~VXX.11', {'weight': -0.917891154076294}), ('EOD~EMB.11', 'EOD~XLB.11', {'weight': 0.815172459390289}), ('EOD~EMB.11', 'EOD~XLE.11', {'weight': -0.3468231735806977}), ('EOD~EMB.11', 'EOD~XLF.11', {'weight': 0.8424849167403902}), ('EOD~EMB.11', 'EOD~XLK.11', {'weight': 0.9396927445239427}), ('EOD~EMB.11', 'EOD~XLU.11', {'weight': 0.9479704018318649}), ('EOD~EMB.11', 'EOD~CSJ.11', {'weight': 0.9681398005085847}), ('EOD~EMB.11', 'EOD~FXF.11', {'weight': -0.6552349899595783}), ('EOD~EPP.11', 'EOD~EPP.11', {'weight': 1.0}), ('EOD~EPP.11', 'EOD~EWG.11', {'weight': 0.8597862664644991}), ('EOD~EPP.11', 'EOD~EWI.11', {'weight': 0.5339846977425803}), ('EOD~EPP.11', 'EOD~EWJ.11', {'weight': 0.5591167389795515}), ('EOD~EPP.11', 'EOD~EWQ.11', {'weight': 0.8133598165517331}), ('EOD~EPP.11', 'EOD~EWU.11', {'weight': 0.6724227331002911}), ('EOD~EPP.11', 'EOD~FXB.11', {'weight': -0.09848933425400558}), ('EOD~EPP.11', 'EOD~FXC.11', {'weight': 0.35817651383182686}), ('EOD~EPP.11', 'EOD~FXE.11', {'weight': 0.25846010324219465}), ('EOD~EPP.11', 'EOD~FXI.11', {'weight': 0.6396099358133942}), ('EOD~EPP.11', 'EOD~FXY.11', {'weight': 0.25376752807206976}), ('EOD~EPP.11', 'EOD~GDX.11', {'weight': 0.5048119754621815}), ('EOD~EPP.11', 'EOD~GLD.11', {'weight': 0.4903944240115872}), ('EOD~EPP.11', 'EOD~IEF.11', {'weight': -0.12389624317439828}), ('EOD~EPP.11', 'EOD~IYR.11', {'weight': 0.25762132714520625}), ('EOD~EPP.11', 'EOD~JNK.11', {'weight': 0.8660583017774968}), ('EOD~EPP.11', 'EOD~LQD.11', {'weight': 0.3233330313341973}), ('EOD~EPP.11', 'EOD~SLV.11', {'weight': 0.4161707270546062}), ('EOD~EPP.11', 'EOD~SPY.11', {'weight': 0.46751535929469795}), ('EOD~EPP.11', 'EOD~TIP.11', {'weight': 0.4708171194272065}), ('EOD~EPP.11', 'EOD~TLT.11', {'weight': -0.10587534083446741}), ('EOD~EPP.11', 'EOD~USO.11', {'weight': 0.22729683619619148}), ('EOD~EPP.11', 'EOD~UUP.11', {'weight': -0.27330470656472583}), ('EOD~EPP.11', 'EOD~VGK.11', {'weight': 0.8316543099395914}), ('EOD~EPP.11', 'EOD~VPL.11', {'weight': 0.8067635822976087}), ('EOD~EPP.11', 'EOD~VXX.11', {'weight': -0.22942732988837863}), ('EOD~EPP.11', 'EOD~XLB.11', {'weight': 0.7907337430341151}), ('EOD~EPP.11', 'EOD~XLE.11', {'weight': 0.5291608731516905}), ('EOD~EPP.11', 'EOD~XLF.11', {'weight': 0.5400896703554877}), ('EOD~EPP.11', 'EOD~XLK.11', {'weight': 0.4490149016249703}), ('EOD~EPP.11', 'EOD~XLU.11', {'weight': 0.30582241133864524}), ('EOD~EPP.11', 'EOD~CSJ.11', {'weight': 0.2935149915296081}), ('EOD~EPP.11', 'EOD~FXF.11', {'weight': 0.17013452592081627}), ('EOD~EWG.11', 'EOD~EWG.11', {'weight': 1.0}), ('EOD~EWG.11', 'EOD~EWI.11', {'weight': 0.6705260329482227}), ('EOD~EWG.11', 'EOD~EWJ.11', {'weight': 0.664513502132053}), ('EOD~EWG.11', 'EOD~EWQ.11', {'weight': 0.9641384261729081}), ('EOD~EWG.11', 'EOD~EWU.11', {'weight': 0.6731316125625135}), ('EOD~EWG.11', 'EOD~FXB.11', {'weight': -0.09793154728817523}), ('EOD~EWG.11', 'EOD~FXC.11', {'weight': 0.23527927600428536}), ('EOD~EWG.11', 'EOD~FXE.11', {'weight': 0.2254344850778561}), ('EOD~EWG.11', 'EOD~FXI.11', {'weight': 0.5987662121876218}), ('EOD~EWG.11', 'EOD~FXY.11', {'weight': 0.12271453388109695}), ('EOD~EWG.11', 'EOD~GDX.11', {'weight': 0.3002178392019122}), ('EOD~EWG.11', 'EOD~GLD.11', {'weight': 0.33159481955101694}), ('EOD~EWG.11', 'EOD~IEF.11', {'weight': -0.14208514691578297}), ('EOD~EWG.11', 'EOD~IYR.11', {'weight': 0.21576749750680013}), ('EOD~EWG.11', 'EOD~JNK.11', {'weight': 0.8095755873858149}), ('EOD~EWG.11', 'EOD~LQD.11', {'weight': 0.2826432608890003}), ('EOD~EWG.11', 'EOD~SLV.11', {'weight': 0.27966838395013643}), ('EOD~EWG.11', 'EOD~SPY.11', {'weight': 0.5021800825910196}), ('EOD~EWG.11', 'EOD~TIP.11', {'weight': 0.29740308607572985}), ('EOD~EWG.11', 'EOD~TLT.11', {'weight': -0.15554585401668744}), ('EOD~EWG.11', 'EOD~USO.11', {'weight': 0.12901974626419974}), ('EOD~EWG.11', 'EOD~UUP.11', {'weight': -0.22616780163747086}), ('EOD~EWG.11', 'EOD~VGK.11', {'weight': 0.9435574852881182}), ('EOD~EWG.11', 'EOD~VPL.11', {'weight': 0.8307707721975489}), ('EOD~EWG.11', 'EOD~VXX.11', {'weight': -0.23211779710774838}), ('EOD~EWG.11', 'EOD~XLB.11', {'weight': 0.7429085611669827}), ('EOD~EWG.11', 'EOD~XLE.11', {'weight': 0.3188520309273955}), ('EOD~EWG.11', 'EOD~XLF.11', {'weight': 0.5936050048483648}), ('EOD~EWG.11', 'EOD~XLK.11', {'weight': 0.5020036131534916}), ('EOD~EWG.11', 'EOD~XLU.11', {'weight': 0.29761183562671867}), ('EOD~EWG.11', 'EOD~CSJ.11', {'weight': 0.32528678325938865}), ('EOD~EWG.11', 'EOD~FXF.11', {'weight': 0.15176026820384692}), ('EOD~EWI.11', 'EOD~EWI.11', {'weight': 1.0}), ('EOD~EWI.11', 'EOD~EWJ.11', {'weight': 0.12091517057950238}), ('EOD~EWI.11', 'EOD~EWQ.11', {'weight': 0.7157261567171338}), ('EOD~EWI.11', 'EOD~EWU.11', {'weight': 0.8967972304295635}), ('EOD~EWI.11', 'EOD~FXB.11', {'weight': 0.5793358856808534}), ('EOD~EWI.11', 'EOD~FXC.11', {'weight': 0.5898914488459733}), ('EOD~EWI.11', 'EOD~FXE.11', {'weight': 0.5967493166098816}), ('EOD~EWI.11', 'EOD~FXI.11', {'weight': 0.33754436312137936}), ('EOD~EWI.11', 'EOD~FXY.11', {'weight': 0.05538981196050318}), ('EOD~EWI.11', 'EOD~GDX.11', {'weight': -0.08865484759974986}), ('EOD~EWI.11', 'EOD~GLD.11', {'weight': 0.0882047526571044}), ('EOD~EWI.11', 'EOD~IEF.11', {'weight': -0.6148414430563487}), ('EOD~EWI.11', 'EOD~IYR.11', {'weight': -0.3757691645941882}), ('EOD~EWI.11', 'EOD~JNK.11', {'weight': 0.29224048394934454}), ('EOD~EWI.11', 'EOD~LQD.11', {'weight': -0.3526703223712148}), ('EOD~EWI.11', 'EOD~SLV.11', {'weight': 0.23522742228021304}), ('EOD~EWI.11', 'EOD~SPY.11', {'weight': -0.12387797043357728}), ('EOD~EWI.11', 'EOD~TIP.11', {'weight': -0.31065798813368456}), ('EOD~EWI.11', 'EOD~TLT.11', {'weight': -0.6018864393629358}), ('EOD~EWI.11', 'EOD~USO.11', {'weight': 0.5957500364988731}), ('EOD~EWI.11', 'EOD~UUP.11', {'weight': -0.5690040084204314}), ('EOD~EWI.11', 'EOD~VGK.11', {'weight': 0.8347344208196589}), ('EOD~EWI.11', 'EOD~VPL.11', {'weight': 0.28505471070217614}), ('EOD~EWI.11', 'EOD~VXX.11', {'weight': 0.3399406023317858}), ('EOD~EWI.11', 'EOD~XLB.11', {'weight': 0.1722349345914374}), ('EOD~EWI.11', 'EOD~XLE.11', {'weight': 0.5360578351576762}), ('EOD~EWI.11', 'EOD~XLF.11', {'weight': 0.011219328971657876}), ('EOD~EWI.11', 'EOD~XLK.11', {'weight': -0.12867101079069695}), ('EOD~EWI.11', 'EOD~XLU.11', {'weight': -0.3334695226720735}), ('EOD~EWI.11', 'EOD~CSJ.11', {'weight': -0.33243943683124644}), ('EOD~EWI.11', 'EOD~FXF.11', {'weight': 0.5886806745103565}), ('EOD~EWJ.11', 'EOD~EWJ.11', {'weight': 1.0}), ('EOD~EWJ.11', 'EOD~EWQ.11', {'weight': 0.6563124681427941}), ('EOD~EWJ.11', 'EOD~EWU.11', {'weight': 0.07500198227544709}), ('EOD~EWJ.11', 'EOD~FXB.11', {'weight': -0.6534440296590927}), ('EOD~EWJ.11', 'EOD~FXC.11', {'weight': -0.44287567858961097}), ('EOD~EWJ.11', 'EOD~FXE.11', {'weight': -0.5039346054944907}), ('EOD~EWJ.11', 'EOD~FXI.11', {'weight': 0.7272370776258034}), ('EOD~EWJ.11', 'EOD~FXY.11', {'weight': -0.3188388170123497}), ('EOD~EWJ.11', 'EOD~GDX.11', {'weight': 0.08198836156065281}), ('EOD~EWJ.11', 'EOD~GLD.11', {'weight': -0.05255977317574683}), ('EOD~EWJ.11', 'EOD~IEF.11', {'weight': 0.4628544989487049}), ('EOD~EWJ.11', 'EOD~IYR.11', {'weight': 0.7043889124611848}), ('EOD~EWJ.11', 'EOD~JNK.11', {'weight': 0.7664748137861044}), ('EOD~EWJ.11', 'EOD~LQD.11', {'weight': 0.7109346646115038}), ('EOD~EWJ.11', 'EOD~SLV.11', {'weight': -0.24059443418267126}), ('EOD~EWJ.11', 'EOD~SPY.11', {'weight': 0.8951040670476321}), ('EOD~EWJ.11', 'EOD~TIP.11', {'weight': 0.6035158727918991}), ('EOD~EWJ.11', 'EOD~TLT.11', {'weight': 0.4155513386427149}), ('EOD~EWJ.11', 'EOD~USO.11', {'weight': -0.5496930617640426}), ('EOD~EWJ.11', 'EOD~UUP.11', {'weight': 0.47931536563226806}), ('EOD~EWJ.11', 'EOD~VGK.11', {'weight': 0.5482806414647301}), ('EOD~EWJ.11', 'EOD~VPL.11', {'weight': 0.9337503275437562}), ('EOD~EWJ.11', 'EOD~VXX.11', {'weight': -0.7996303897063941}), ('EOD~EWJ.11', 'EOD~XLB.11', {'weight': 0.8383006752360682}), ('EOD~EWJ.11', 'EOD~XLE.11', {'weight': -0.24951766143966217}), ('EOD~EWJ.11', 'EOD~XLF.11', {'weight': 0.8985350114564941}), ('EOD~EWJ.11', 'EOD~XLK.11', {'weight': 0.8851677851767066}), ('EOD~EWJ.11', 'EOD~XLU.11', {'weight': 0.7132081487997428}), ('EOD~EWJ.11', 'EOD~CSJ.11', {'weight': 0.7738782774701272}), ('EOD~EWJ.11', 'EOD~FXF.11', {'weight': -0.5223728266719402}), ('EOD~EWQ.11', 'EOD~EWQ.11', {'weight': 1.0}), ('EOD~EWQ.11', 'EOD~EWU.11', {'weight': 0.6514180370159416}), ('EOD~EWQ.11', 'EOD~FXB.11', {'weight': -0.08398487168291702}), ('EOD~EWQ.11', 'EOD~FXC.11', {'weight': 0.1947364563640846}), ('EOD~EWQ.11', 'EOD~FXE.11', {'weight': 0.22230585696886596}), ('EOD~EWQ.11', 'EOD~FXI.11', {'weight': 0.5416106611742897}), ('EOD~EWQ.11', 'EOD~FXY.11', {'weight': 0.10134675529740872}), ('EOD~EWQ.11', 'EOD~GDX.11', {'weight': 0.24328893055733355}), ('EOD~EWQ.11', 'EOD~GLD.11', {'weight': 0.3003517821168685}), ('EOD~EWQ.11', 'EOD~IEF.11', {'weight': -0.0963949412805106}), ('EOD~EWQ.11', 'EOD~IYR.11', {'weight': 0.224361553971088}), ('EOD~EWQ.11', 'EOD~JNK.11', {'weight': 0.7715913227459785}), ('EOD~EWQ.11', 'EOD~LQD.11', {'weight': 0.2961009453346487}), ('EOD~EWQ.11', 'EOD~SLV.11', {'weight': 0.1995287207981043}), ('EOD~EWQ.11', 'EOD~SPY.11', {'weight': 0.5183629446007472}), ('EOD~EWQ.11', 'EOD~TIP.11', {'weight': 0.29462277609268195}), ('EOD~EWQ.11', 'EOD~TLT.11', {'weight': -0.13157960399946594}), ('EOD~EWQ.11', 'EOD~USO.11', {'weight': 0.09497017148644435}), ('EOD~EWQ.11', 'EOD~UUP.11', {'weight': -0.2385068643807802}), ('EOD~EWQ.11', 'EOD~VGK.11', {'weight': 0.9572035819899087}), ('EOD~EWQ.11', 'EOD~VPL.11', {'weight': 0.8140658350496731}), ('EOD~EWQ.11', 'EOD~VXX.11', {'weight': -0.26648809270138807}), ('EOD~EWQ.11', 'EOD~XLB.11', {'weight': 0.7187694235901915}), ('EOD~EWQ.11', 'EOD~XLE.11', {'weight': 0.24711021757588994}), ('EOD~EWQ.11', 'EOD~XLF.11', {'weight': 0.5977957237563566}), ('EOD~EWQ.11', 'EOD~XLK.11', {'weight': 0.5275634650222656}), ('EOD~EWQ.11', 'EOD~XLU.11', {'weight': 0.33406916399759246}), ('EOD~EWQ.11', 'EOD~CSJ.11', {'weight': 0.361204409172602}), ('EOD~EWQ.11', 'EOD~FXF.11', {'weight': 0.12669181157489162}), ('EOD~EWU.11', 'EOD~EWU.11', {'weight': 1.0}), ('EOD~EWU.11', 'EOD~FXB.11', {'weight': 0.6139816239719904}), ('EOD~EWU.11', 'EOD~FXC.11', {'weight': 0.7483146990998277}), ('EOD~EWU.11', 'EOD~FXE.11', {'weight': 0.6763122352687867}), ('EOD~EWU.11', 'EOD~FXI.11', {'weight': 0.406783878582737}), ('EOD~EWU.11', 'EOD~FXY.11', {'weight': 0.21969578185457428}), ('EOD~EWU.11', 'EOD~GDX.11', {'weight': 0.15137776365926642}), ('EOD~EWU.11', 'EOD~GLD.11', {'weight': 0.2837039534523601}), ('EOD~EWU.11', 'EOD~IEF.11', {'weight': -0.660789236070249}), ('EOD~EWU.11', 'EOD~IYR.11', {'weight': -0.3810279331734317}), ('EOD~EWU.11', 'EOD~JNK.11', {'weight': 0.36873229387746176}), ('EOD~EWU.11', 'EOD~LQD.11', {'weight': -0.3545809250900766}), ('EOD~EWU.11', 'EOD~SLV.11', {'weight': 0.46129105966955086}), ('EOD~EWU.11', 'EOD~SPY.11', {'weight': -0.17256253642914277}), ('EOD~EWU.11', 'EOD~TIP.11', {'weight': -0.2062377114035932}), ('EOD~EWU.11', 'EOD~TLT.11', {'weight': -0.6181587738383287}), ('EOD~EWU.11', 'EOD~USO.11', {'weight': 0.7216515716367314}), ('EOD~EWU.11', 'EOD~UUP.11', {'weight': -0.6554208955700455}), ('EOD~EWU.11', 'EOD~VGK.11', {'weight': 0.8213432850709177}), ('EOD~EWU.11', 'EOD~VPL.11', {'weight': 0.29979958354055214}), ('EOD~EWU.11', 'EOD~VXX.11', {'weight': 0.38665325118194466}), ('EOD~EWU.11', 'EOD~XLB.11', {'weight': 0.23244220246050265}), ('EOD~EWU.11', 'EOD~XLE.11', {'weight': 0.7612478940315149}), ('EOD~EWU.11', 'EOD~XLF.11', {'weight': -0.055186274945745004}), ('EOD~EWU.11', 'EOD~XLK.11', {'weight': -0.19769879700248927}), ('EOD~EWU.11', 'EOD~XLU.11', {'weight': -0.37354240835794716}), ('EOD~EWU.11', 'EOD~CSJ.11', {'weight': -0.3893069527038063}), ('EOD~EWU.11', 'EOD~FXF.11', {'weight': 0.6902390637350311}), ('EOD~FXB.11', 'EOD~FXB.11', {'weight': 1.0}), ('EOD~FXB.11', 'EOD~FXC.11', {'weight': 0.7868852446806109}), ('EOD~FXB.11', 'EOD~FXE.11', {'weight': 0.7795502104758865}), ('EOD~FXB.11', 'EOD~FXI.11', {'weight': -0.21478751165680482}), ('EOD~FXB.11', 'EOD~FXY.11', {'weight': 0.21192627499437489}), ('EOD~FXB.11', 'EOD~GDX.11', {'weight': -0.19022106715486956}), ('EOD~FXB.11', 'EOD~GLD.11', {'weight': 0.01997947694723297}), ('EOD~FXB.11', 'EOD~IEF.11', {'weight': -0.8109515006001993}), ('EOD~FXB.11', 'EOD~IYR.11', {'weight': -0.8528615239979453}), ('EOD~FXB.11', 'EOD~JNK.11', {'weight': -0.466688570069951}), ('EOD~FXB.11', 'EOD~LQD.11', {'weight': -0.8650433578695028}), ('EOD~FXB.11', 'EOD~SLV.11', {'weight': 0.3201193946407226}), ('EOD~FXB.11', 'EOD~SPY.11', {'weight': -0.8375505969483111}), ('EOD~FXB.11', 'EOD~TIP.11', {'weight': -0.7452800321477305}), ('EOD~FXB.11', 'EOD~TLT.11', {'weight': -0.7565184724511831}), ('EOD~FXB.11', 'EOD~USO.11', {'weight': 0.859096191731944}), ('EOD~FXB.11', 'EOD~UUP.11', {'weight': -0.7448786461375757}), ('EOD~FXB.11', 'EOD~VGK.11', {'weight': 0.13484414132439163}), ('EOD~FXB.11', 'EOD~VPL.11', {'weight': -0.5352249502739146}), ('EOD~FXB.11', 'EOD~VXX.11', {'weight': 0.8843024325954357}), ('EOD~FXB.11', 'EOD~XLB.11', {'weight': -0.575260928331367}), ('EOD~FXB.11', 'EOD~XLE.11', {'weight': 0.587652008653301}), ('EOD~FXB.11', 'EOD~XLF.11', {'weight': -0.76027475780096}), ('EOD~FXB.11', 'EOD~XLK.11', {'weight': -0.8461651756143578}), ('EOD~FXB.11', 'EOD~XLU.11', {'weight': -0.8801200012208324}), ('EOD~FXB.11', 'EOD~CSJ.11', {'weight': -0.914237985637965}), ('EOD~FXB.11', 'EOD~FXF.11', {'weight': 0.83806616779064}), ('EOD~FXC.11', 'EOD~FXC.11', {'weight': 1.0}), ('EOD~FXC.11', 'EOD~FXE.11', {'weight': 0.9404053090573414}), ('EOD~FXC.11', 'EOD~FXI.11', {'weight': -0.062106604802701866}), ('EOD~FXC.11', 'EOD~FXY.11', {'weight': 0.5699006903080366}), ('EOD~FXC.11', 'EOD~GDX.11', {'weight': 0.2735719919327497}), ('EOD~FXC.11', 'EOD~GLD.11', {'weight': 0.42970854137430436}), ('EOD~FXC.11', 'EOD~IEF.11', {'weight': -0.8222340550261474}), ('EOD~FXC.11', 'EOD~IYR.11', {'weight': -0.7122743599358995}), ('EOD~FXC.11', 'EOD~JNK.11', {'weight': -0.025295812548288502}), ('EOD~FXC.11', 'EOD~LQD.11', {'weight': -0.6410965658932705}), ('EOD~FXC.11', 'EOD~SLV.11', {'weight': 0.6929195460498142}), ('EOD~FXC.11', 'EOD~SPY.11', {'weight': -0.606419035253757}), ('EOD~FXC.11', 'EOD~TIP.11', {'weight': -0.415334368960674}), ('EOD~FXC.11', 'EOD~TLT.11', {'weight': -0.7768876452053343}), ('EOD~FXC.11', 'EOD~USO.11', {'weight': 0.9505141177857009}), ('EOD~FXC.11', 'EOD~UUP.11', {'weight': -0.9219138220673324}), ('EOD~FXC.11', 'EOD~VGK.11', {'weight': 0.35752495255186073}), ('EOD~FXC.11', 'EOD~VPL.11', {'weight': -0.1789289920895069}), ('EOD~FXC.11', 'EOD~VXX.11', {'weight': 0.7573695257136497}), ('EOD~FXC.11', 'EOD~XLB.11', {'weight': -0.20030884772808205}), ('EOD~FXC.11', 'EOD~XLE.11', {'weight': 0.8517972446155526}), ('EOD~FXC.11', 'EOD~XLF.11', {'weight': -0.49569532520635323}), ('EOD~FXC.11', 'EOD~XLK.11', {'weight': -0.6099850878179301}), ('EOD~FXC.11', 'EOD~XLU.11', {'weight': -0.6626100221279311}), ('EOD~FXC.11', 'EOD~CSJ.11', {'weight': -0.6805156535236003}), ('EOD~FXC.11', 'EOD~FXF.11', {'weight': 0.858120760082818}), ('EOD~FXE.11', 'EOD~FXE.11', {'weight': 1.0}), ('EOD~FXE.11', 'EOD~FXI.11', {'weight': -0.2588709143005478}), ('EOD~FXE.11', 'EOD~FXY.11', {'weight': 0.6658169450775777}), ('EOD~FXE.11', 'EOD~GDX.11', {'weight': 0.27621178683821407}), ('EOD~FXE.11', 'EOD~GLD.11', {'weight': 0.47283511952281343}), ('EOD~FXE.11', 'EOD~IEF.11', {'weight': -0.7995281951779325}), ('EOD~FXE.11', 'EOD~IYR.11', {'weight': -0.743646919307888}), ('EOD~FXE.11', 'EOD~JNK.11', {'weight': -0.09550210128263173}), ('EOD~FXE.11', 'EOD~LQD.11', {'weight': -0.6452863806888867}), ('EOD~FXE.11', 'EOD~SLV.11', {'weight': 0.7055768694455112}), ('EOD~FXE.11', 'EOD~SPY.11', {'weight': -0.6300894983139668}), ('EOD~FXE.11', 'EOD~TIP.11', {'weight': -0.45071987748079667}), ('EOD~FXE.11', 'EOD~TLT.11', {'weight': -0.7795242306766093}), ('EOD~FXE.11', 'EOD~USO.11', {'weight': 0.9253779429929463}), ('EOD~FXE.11', 'EOD~UUP.11', {'weight': -0.9895676660005818}), ('EOD~FXE.11', 'EOD~VGK.11', {'weight': 0.339212745418268}), ('EOD~FXE.11', 'EOD~VPL.11', {'weight': -0.24194667128794115}), ('EOD~FXE.11', 'EOD~VXX.11', {'weight': 0.7772136452349477}), ('EOD~FXE.11', 'EOD~XLB.11', {'weight': -0.28486450796059565}), ('EOD~FXE.11', 'EOD~XLE.11', {'weight': 0.7375664001120208}), ('EOD~FXE.11', 'EOD~XLF.11', {'weight': -0.529785755201023}), ('EOD~FXE.11', 'EOD~XLK.11', {'weight': -0.6050425597825639}), ('EOD~FXE.11', 'EOD~XLU.11', {'weight': -0.6421908763999554}), ('EOD~FXE.11', 'EOD~CSJ.11', {'weight': -0.6459939919744419}), ('EOD~FXE.11', 'EOD~FXF.11', {'weight': 0.8763361951817574}), ('EOD~FXI.11', 'EOD~FXI.11', {'weight': 1.0}), ('EOD~FXI.11', 'EOD~FXY.11', {'weight': -0.4002242625115231}), ('EOD~FXI.11', 'EOD~GDX.11', {'weight': -0.012700922957709172}), ('EOD~FXI.11', 'EOD~GLD.11', {'weight': -0.040317427099069034}), ('EOD~FXI.11', 'EOD~IEF.11', {'weight': 0.1626548256042593}), ('EOD~FXI.11', 'EOD~IYR.11', {'weight': 0.41428988890075863}), ('EOD~FXI.11', 'EOD~JNK.11', {'weight': 0.6331230447399261}), ('EOD~FXI.11', 'EOD~LQD.11', {'weight': 0.38938938843710214}), ('EOD~FXI.11', 'EOD~SLV.11', {'weight': -0.15924169240132352}), ('EOD~FXI.11', 'EOD~SPY.11', {'weight': 0.546225071622735}), ('EOD~FXI.11', 'EOD~TIP.11', {'weight': 0.358988001672543}), ('EOD~FXI.11', 'EOD~TLT.11', {'weight': 0.20226369195117075}), ('EOD~FXI.11', 'EOD~USO.11', {'weight': -0.1818587211784306}), ('EOD~FXI.11', 'EOD~UUP.11', {'weight': 0.26424085931370145}), ('EOD~FXI.11', 'EOD~VGK.11', {'weight': 0.606869579994869}), ('EOD~FXI.11', 'EOD~VPL.11', {'weight': 0.7406980646783377}), ('EOD~FXI.11', 'EOD~VXX.11', {'weight': -0.40023947100036156}), ('EOD~FXI.11', 'EOD~XLB.11', {'weight': 0.6785385473702064}), ('EOD~FXI.11', 'EOD~XLE.11', {'weight': 0.08684415667439012}), ('EOD~FXI.11', 'EOD~XLF.11', {'weight': 0.5688487176863497}), ('EOD~FXI.11', 'EOD~XLK.11', {'weight': 0.5039307631141231}), ('EOD~FXI.11', 'EOD~XLU.11', {'weight': 0.3354574976786897}), ('EOD~FXI.11', 'EOD~CSJ.11', {'weight': 0.32556768805351943}), ('EOD~FXI.11', 'EOD~FXF.11', {'weight': -0.13824471278011166}), ('EOD~FXY.11', 'EOD~FXY.11', {'weight': 1.0}), ('EOD~FXY.11', 'EOD~GDX.11', {'weight': 0.7641389718856066}), ('EOD~FXY.11', 'EOD~GLD.11', {'weight': 0.8097900953573614}), ('EOD~FXY.11', 'EOD~IEF.11', {'weight': -0.2666865271647152}), ('EOD~FXY.11', 'EOD~IYR.11', {'weight': -0.2925225281067885}), ('EOD~FXY.11', 'EOD~JNK.11', {'weight': 0.08904063151718838}), ('EOD~FXY.11', 'EOD~LQD.11', {'weight': -0.12695433935488099}), ('EOD~FXY.11', 'EOD~SLV.11', {'weight': 0.8718188300748834}), ('EOD~FXY.11', 'EOD~SPY.11', {'weight': -0.3059368717250734}), ('EOD~FXY.11', 'EOD~TIP.11', {'weight': 0.11435948188469341}), ('EOD~FXY.11', 'EOD~TLT.11', {'weight': -0.29051807022958537}), ('EOD~FXY.11', 'EOD~USO.11', {'weight': 0.5247117625660008}), ('EOD~FXY.11', 'EOD~UUP.11', {'weight': -0.7221883613903917}), ('EOD~FXY.11', 'EOD~VGK.11', {'weight': 0.07392534715361535}), ('EOD~FXY.11', 'EOD~VPL.11', {'weight': -0.07958430428828453}), ('EOD~FXY.11', 'EOD~VXX.11', {'weight': 0.3335505078369079}), ('EOD~FXY.11', 'EOD~XLB.11', {'weight': -0.09757596039359684}), ('EOD~FXY.11', 'EOD~XLE.11', {'weight': 0.5036517036495662}), ('EOD~FXY.11', 'EOD~XLF.11', {'weight': -0.32902272169730973}), ('EOD~FXY.11', 'EOD~XLK.11', {'weight': -0.2651128884616491}), ('EOD~FXY.11', 'EOD~XLU.11', {'weight': -0.1823488077218536}), ('EOD~FXY.11', 'EOD~CSJ.11', {'weight': -0.12159373300032895}), ('EOD~FXY.11', 'EOD~FXF.11', {'weight': 0.5158192889339194}), ('EOD~GDX.11', 'EOD~GDX.11', {'weight': 1.0}), ('EOD~GDX.11', 'EOD~GLD.11', {'weight': 0.9143887535118134}), ('EOD~GDX.11', 'EOD~IEF.11', {'weight': 0.12634534695233515}), ('EOD~GDX.11', 'EOD~IYR.11', {'weight': 0.23727949902230241}), ('EOD~GDX.11', 'EOD~JNK.11', {'weight': 0.46342215127776915}), ('EOD~GDX.11', 'EOD~LQD.11', {'weight': 0.3526338438295391}), ('EOD~GDX.11', 'EOD~SLV.11', {'weight': 0.7799988845217449}), ('EOD~GDX.11', 'EOD~SPY.11', {'weight': 0.1780172193224337}), ('EOD~GDX.11', 'EOD~TIP.11', {'weight': 0.5722439554098355}), ('EOD~GDX.11', 'EOD~TLT.11', {'weight': 0.1289821160242479}), ('EOD~GDX.11', 'EOD~USO.11', {'weight': 0.159170876415729}), ('EOD~GDX.11', 'EOD~UUP.11', {'weight': -0.3508165690860492}), ('EOD~GDX.11', 'EOD~VGK.11', {'weight': 0.19150024499447846}), ('EOD~GDX.11', 'EOD~VPL.11', {'weight': 0.3018044136895767}), ('EOD~GDX.11', 'EOD~VXX.11', {'weight': -0.12355860333600004}), ('EOD~GDX.11', 'EOD~XLB.11', {'weight': 0.3953431285147875}), ('EOD~GDX.11', 'EOD~XLE.11', {'weight': 0.38449477220194417}), ('EOD~GDX.11', 'EOD~XLF.11', {'weight': 0.1105011801516269}), ('EOD~GDX.11', 'EOD~XLK.11', {'weight': 0.17896583280333636}), ('EOD~GDX.11', 'EOD~XLU.11', {'weight': 0.2879258944366678}), ('EOD~GDX.11', 'EOD~CSJ.11', {'weight': 0.3015018009868739}), ('EOD~GDX.11', 'EOD~FXF.11', {'weight': 0.1982180878798516}), ('EOD~GLD.11', 'EOD~GLD.11', {'weight': 1.0}), ('EOD~GLD.11', 'EOD~IEF.11', {'weight': -0.003990843411127809}), ('EOD~GLD.11', 'EOD~IYR.11', {'weight': 0.05845812110490983}), ('EOD~GLD.11', 'EOD~JNK.11', {'weight': 0.36336627548631434}), ('EOD~GLD.11', 'EOD~LQD.11', {'weight': 0.19156743650537575}), ('EOD~GLD.11', 'EOD~SLV.11', {'weight': 0.8301889057271454}), ('EOD~GLD.11', 'EOD~SPY.11', {'weight': 0.012815717684202107}), ('EOD~GLD.11', 'EOD~TIP.11', {'weight': 0.41819725049070894}), ('EOD~GLD.11', 'EOD~TLT.11', {'weight': 0.0035323209074956175}), ('EOD~GLD.11', 'EOD~USO.11', {'weight': 0.30966766223127556}), ('EOD~GLD.11', 'EOD~UUP.11', {'weight': -0.5418867498418983}), ('EOD~GLD.11', 'EOD~VGK.11', {'weight': 0.27713924623133174}), ('EOD~GLD.11', 'EOD~VPL.11', {'weight': 0.20484189783900633}), ('EOD~GLD.11', 'EOD~VXX.11', {'weight': 0.09504811636030419}), ('EOD~GLD.11', 'EOD~XLB.11', {'weight': 0.25802381530739626}), ('EOD~GLD.11', 'EOD~XLE.11', {'weight': 0.40930879095353184}), ('EOD~GLD.11', 'EOD~XLF.11', {'weight': -0.047592792482179264}), ('EOD~GLD.11', 'EOD~XLK.11', {'weight': 0.0314612053431107}), ('EOD~GLD.11', 'EOD~XLU.11', {'weight': 0.14837920119047474}), ('EOD~GLD.11', 'EOD~CSJ.11', {'weight': 0.13657010813096127}), ('EOD~GLD.11', 'EOD~FXF.11', {'weight': 0.41100721832141374}), ('EOD~IEF.11', 'EOD~IEF.11', {'weight': 1.0}), ('EOD~IEF.11', 'EOD~IYR.11', {'weight': 0.879944705651482}), ('EOD~IEF.11', 'EOD~JNK.11', {'weight': 0.19293058190178733}), ('EOD~IEF.11', 'EOD~LQD.11', {'weight': 0.8734431029206507}), ('EOD~IEF.11', 'EOD~SLV.11', {'weight': -0.43850096264283217}), ('EOD~IEF.11', 'EOD~SPY.11', {'weight': 0.6832837279871151}), ('EOD~IEF.11', 'EOD~TIP.11', {'weight': 0.7458994738117358}), ('EOD~IEF.11', 'EOD~TLT.11', {'weight': 0.9814082463376682}), ('EOD~IEF.11', 'EOD~USO.11', {'weight': -0.901156299200379}), ('EOD~IEF.11', 'EOD~UUP.11', {'weight': 0.7218288265869517}), ('EOD~IEF.11', 'EOD~VGK.11', {'weight': -0.2506440492331784}), ('EOD~IEF.11', 'EOD~VPL.11', {'weight': 0.309003003909317}), ('EOD~IEF.11', 'EOD~VXX.11', {'weight': -0.8058822880094856}), ('EOD~IEF.11', 'EOD~XLB.11', {'weight': 0.3702801644974669}), ('EOD~IEF.11', 'EOD~XLE.11', {'weight': -0.728638909154264}), ('EOD~IEF.11', 'EOD~XLF.11', {'weight': 0.49367913389604884}), ('EOD~IEF.11', 'EOD~XLK.11', {'weight': 0.6885621883631432}), ('EOD~IEF.11', 'EOD~XLU.11', {'weight': 0.8394966493062194}), ('EOD~IEF.11', 'EOD~CSJ.11', {'weight': 0.8222586670114664}), ('EOD~IEF.11', 'EOD~FXF.11', {'weight': -0.7676646795076535}), ('EOD~IYR.11', 'EOD~IYR.11', {'weight': 1.0}), ('EOD~IYR.11', 'EOD~JNK.11', {'weight': 0.5511890220917516}), ('EOD~IYR.11', 'EOD~LQD.11', {'weight': 0.9631840470959069}), ('EOD~IYR.11', 'EOD~SLV.11', {'weight': -0.33698050744308894}), ('EOD~IYR.11', 'EOD~SPY.11', {'weight': 0.9004802595149192}), ('EOD~IYR.11', 'EOD~TIP.11', {'weight': 0.8551375406041948}), ('EOD~IYR.11', 'EOD~TLT.11', {'weight': 0.8775733275032535}), ('EOD~IYR.11', 'EOD~USO.11', {'weight': -0.8203847027212137}), ('EOD~IYR.11', 'EOD~UUP.11', {'weight': 0.6828248353004188}), ('EOD~IYR.11', 'EOD~VGK.11', {'weight': 0.08448988636097482}), ('EOD~IYR.11', 'EOD~VPL.11', {'weight': 0.6284718485569135}), ('EOD~IYR.11', 'EOD~VXX.11', {'weight': -0.9118238765377403}), ('EOD~IYR.11', 'EOD~XLB.11', {'weight': 0.716635933549885}), ('EOD~IYR.11', 'EOD~XLE.11', {'weight': -0.5023436374609259}), ('EOD~IYR.11', 'EOD~XLF.11', {'weight': 0.778801364618637}), ('EOD~IYR.11', 'EOD~XLK.11', {'weight': 0.8811675196424952}), ('EOD~IYR.11', 'EOD~XLU.11', {'weight': 0.9492891557284693}), ('EOD~IYR.11', 'EOD~CSJ.11', {'weight': 0.9096328639840197}), ('EOD~IYR.11', 'EOD~FXF.11', {'weight': -0.7501712010500328}), ('EOD~JNK.11', 'EOD~JNK.11', {'weight': 1.0}), ('EOD~JNK.11', 'EOD~LQD.11', {'weight': 0.624596571895068}), ('EOD~JNK.11', 'EOD~SLV.11', {'weight': 0.20650285384879902}), ('EOD~JNK.11', 'EOD~SPY.11', {'weight': 0.7491839519791885}), ('EOD~JNK.11', 'EOD~TIP.11', {'weight': 0.6806871382827666}), ('EOD~JNK.11', 'EOD~TLT.11', {'weight': 0.1815540628300362}), ('EOD~JNK.11', 'EOD~USO.11', {'weight': -0.13664323476542165}), ('EOD~JNK.11', 'EOD~UUP.11', {'weight': 0.07172402723364066}), ('EOD~JNK.11', 'EOD~VGK.11', {'weight': 0.7033268840640649}), ('EOD~JNK.11', 'EOD~VPL.11', {'weight': 0.9077811420379607}), ('EOD~JNK.11', 'EOD~VXX.11', {'weight': -0.5708545542244676}), ('EOD~JNK.11', 'EOD~XLB.11', {'weight': 0.9203374491357664}), ('EOD~JNK.11', 'EOD~XLE.11', {'weight': 0.23229473333601694}), ('EOD~JNK.11', 'EOD~XLF.11', {'weight': 0.799862539302067}), ('EOD~JNK.11', 'EOD~XLK.11', {'weight': 0.7297483683973247}), ('EOD~JNK.11', 'EOD~XLU.11', {'weight': 0.5962528485378871}), ('EOD~JNK.11', 'EOD~CSJ.11', {'weight': 0.62598034728663}), ('EOD~JNK.11', 'EOD~FXF.11', {'weight': -0.18067288876517748}), ('EOD~LQD.11', 'EOD~LQD.11', {'weight': 1.0}), ('EOD~LQD.11', 'EOD~SLV.11', {'weight': -0.22631384237164343}), ('EOD~LQD.11', 'EOD~SPY.11', {'weight': 0.8979117781210986}), ('EOD~LQD.11', 'EOD~TIP.11', {'weight': 0.9183707392654724}), ('EOD~LQD.11', 'EOD~TLT.11', {'weight': 0.8586552037727674}), ('EOD~LQD.11', 'EOD~USO.11', {'weight': -0.7636015569613908}), ('EOD~LQD.11', 'EOD~UUP.11', {'weight': 0.5718800499713569}), ('EOD~LQD.11', 'EOD~VGK.11', {'weight': 0.13331776515829002}), ('EOD~LQD.11', 'EOD~VPL.11', {'weight': 0.6729023261318777}), ('EOD~LQD.11', 'EOD~VXX.11', {'weight': -0.8962470975568824}), ('EOD~LQD.11', 'EOD~XLB.11', {'weight': 0.7420578799682467}), ('EOD~LQD.11', 'EOD~XLE.11', {'weight': -0.4500594317625072}), ('EOD~LQD.11', 'EOD~XLF.11', {'weight': 0.7748809862282064}), ('EOD~LQD.11', 'EOD~XLK.11', {'weight': 0.8963358969781919}), ('EOD~LQD.11', 'EOD~XLU.11', {'weight': 0.9571075182600368}), ('EOD~LQD.11', 'EOD~CSJ.11', {'weight': 0.9523719225754399}), ('EOD~LQD.11', 'EOD~FXF.11', {'weight': -0.6930043261090034}), ('EOD~SLV.11', 'EOD~SLV.11', {'weight': 1.0}), ('EOD~SLV.11', 'EOD~SPY.11', {'weight': -0.3139927974977521}), ('EOD~SLV.11', 'EOD~TIP.11', {'weight': 0.03889328645341188}), ('EOD~SLV.11', 'EOD~TLT.11', {'weight': -0.43053722937053146}), ('EOD~SLV.11', 'EOD~USO.11', {'weight': 0.648635592506984}), ('EOD~SLV.11', 'EOD~UUP.11', {'weight': -0.7285945902462068}), ('EOD~SLV.11', 'EOD~VGK.11', {'weight': 0.2404931466407366}), ('EOD~SLV.11', 'EOD~VPL.11', {'weight': 0.014046070019282377}), ('EOD~SLV.11', 'EOD~VXX.11', {'weight': 0.4038135260049315}), ('EOD~SLV.11', 'EOD~XLB.11', {'weight': 0.0050463924909307754}), ('EOD~SLV.11', 'EOD~XLE.11', {'weight': 0.6947637576698135}), ('EOD~SLV.11', 'EOD~XLF.11', {'weight': -0.28540493995799227}), ('EOD~SLV.11', 'EOD~XLK.11', {'weight': -0.3071283022817968}), ('EOD~SLV.11', 'EOD~XLU.11', {'weight': -0.277922476754919}), ('EOD~SLV.11', 'EOD~CSJ.11', {'weight': -0.24066302398867978}), ('EOD~SLV.11', 'EOD~FXF.11', {'weight': 0.6440294359664115}), ('EOD~SPY.11', 'EOD~SPY.11', {'weight': 1.0}), ('EOD~SPY.11', 'EOD~TIP.11', {'weight': 0.7799669977974091}), ('EOD~SPY.11', 'EOD~TLT.11', {'weight': 0.6431347200502524}), ('EOD~SPY.11', 'EOD~USO.11', {'weight': -0.7204716781488231}), ('EOD~SPY.11', 'EOD~UUP.11', {'weight': 0.5884826866727603}), ('EOD~SPY.11', 'EOD~VGK.11', {'weight': 0.3585262095552665}), ('EOD~SPY.11', 'EOD~VPL.11', {'weight': 0.8482298935020182}), ('EOD~SPY.11', 'EOD~VXX.11', {'weight': -0.9275188076690045}), ('EOD~SPY.11', 'EOD~XLB.11', {'weight': 0.8777443825485902}), ('EOD~SPY.11', 'EOD~XLE.11', {'weight': -0.3924012338486876}), ('EOD~SPY.11', 'EOD~XLF.11', {'weight': 0.9632352731578188}), ('EOD~SPY.11', 'EOD~XLK.11', {'weight': 0.991927484322653}), ('EOD~SPY.11', 'EOD~XLU.11', {'weight': 0.9279313914340143}), ('EOD~SPY.11', 'EOD~CSJ.11', {'weight': 0.9323952318607434}), ('EOD~SPY.11', 'EOD~FXF.11', {'weight': -0.704326854409568}), ('EOD~TIP.11', 'EOD~TIP.11', {'weight': 1.0}), ('EOD~TIP.11', 'EOD~TLT.11', {'weight': 0.7400417020343036}), ('EOD~TIP.11', 'EOD~USO.11', {'weight': -0.5372342778016826}), ('EOD~TIP.11', 'EOD~UUP.11', {'weight': 0.36905916100248176}), ('EOD~TIP.11', 'EOD~VGK.11', {'weight': 0.16717222273827384}), ('EOD~TIP.11', 'EOD~VPL.11', {'weight': 0.6524685185788784}), ('EOD~TIP.11', 'EOD~VXX.11', {'weight': -0.7894886566563412}), ('EOD~TIP.11', 'EOD~XLB.11', {'weight': 0.7346898002372512}), ('EOD~TIP.11', 'EOD~XLE.11', {'weight': -0.16765079287720755}), ('EOD~TIP.11', 'EOD~XLF.11', {'weight': 0.6623389450931283}), ('EOD~TIP.11', 'EOD~XLK.11', {'weight': 0.7732362711321811}), ('EOD~TIP.11', 'EOD~XLU.11', {'weight': 0.8558832667458282}), ('EOD~TIP.11', 'EOD~CSJ.11', {'weight': 0.8453122877801745}), ('EOD~TIP.11', 'EOD~FXF.11', {'weight': -0.5044416089427048}), ('EOD~TLT.11', 'EOD~TLT.11', {'weight': 1.0}), ('EOD~TLT.11', 'EOD~USO.11', {'weight': -0.8585554163694846}), ('EOD~TLT.11', 'EOD~UUP.11', {'weight': 0.7092008666983111}), ('EOD~TLT.11', 'EOD~VGK.11', {'weight': -0.25282507187060055}), ('EOD~TLT.11', 'EOD~VPL.11', {'weight': 0.27725449405796915}), ('EOD~TLT.11', 'EOD~VXX.11', {'weight': -0.7528140272833752}), ('EOD~TLT.11', 'EOD~XLB.11', {'weight': 0.3653157232468368}), ('EOD~TLT.11', 'EOD~XLE.11', {'weight': -0.6712582522763595}), ('EOD~TLT.11', 'EOD~XLF.11', {'weight': 0.4506544462933469}), ('EOD~TLT.11', 'EOD~XLK.11', {'weight': 0.6383002162728216}), ('EOD~TLT.11', 'EOD~XLU.11', {'weight': 0.8057973039922474}), ('EOD~TLT.11', 'EOD~CSJ.11', {'weight': 0.7567709354007995}), ('EOD~TLT.11', 'EOD~FXF.11', {'weight': -0.7292806973952846}), ('EOD~USO.11', 'EOD~USO.11', {'weight': 1.0}), ('EOD~USO.11', 'EOD~UUP.11', {'weight': -0.8887457073593489}), ('EOD~USO.11', 'EOD~VGK.11', {'weight': 0.27058313495539604}), ('EOD~USO.11', 'EOD~VPL.11', {'weight': -0.31569013199538737}), ('EOD~USO.11', 'EOD~VXX.11', {'weight': 0.8242813889254016}), ('EOD~USO.11', 'EOD~XLB.11', {'weight': -0.3401519201350801}), ('EOD~USO.11', 'EOD~XLE.11', {'weight': 0.865063674172261}), ('EOD~USO.11', 'EOD~XLF.11', {'weight': -0.5987327352045696}), ('EOD~USO.11', 'EOD~XLK.11', {'weight': -0.7234827609211374}), ('EOD~USO.11', 'EOD~XLU.11', {'weight': -0.7894595696193821}), ('EOD~USO.11', 'EOD~CSJ.11', {'weight': -0.7933653965357801}), ('EOD~USO.11', 'EOD~FXF.11', {'weight': 0.8814899029838816}), ('EOD~UUP.11', 'EOD~UUP.11', {'weight': 1.0}), ('EOD~UUP.11', 'EOD~VGK.11', {'weight': -0.34529700541104247}), ('EOD~UUP.11', 'EOD~VPL.11', {'weight': 0.2125136726369178}), ('EOD~UUP.11', 'EOD~VXX.11', {'weight': -0.7208167840961897}), ('EOD~UUP.11', 'EOD~XLB.11', {'weight': 0.2523308427087041}), ('EOD~UUP.11', 'EOD~XLE.11', {'weight': -0.7109154845860496}), ('EOD~UUP.11', 'EOD~XLF.11', {'weight': 0.5143305389195443}), ('EOD~UUP.11', 'EOD~XLK.11', {'weight': 0.5608292618338003}), ('EOD~UUP.11', 'EOD~XLU.11', {'weight': 0.5775416125502079}), ('EOD~UUP.11', 'EOD~CSJ.11', {'weight': 0.575982309229509}), ('EOD~UUP.11', 'EOD~FXF.11', {'weight': -0.8603782165389633}), ('EOD~VGK.11', 'EOD~VGK.11', {'weight': 1.0}), ('EOD~VGK.11', 'EOD~VPL.11', {'weight': 0.7263520353698218}), ('EOD~VGK.11', 'EOD~VXX.11', {'weight': -0.10183362060551707}), ('EOD~VGK.11', 'EOD~XLB.11', {'weight': 0.6341058303793898}), ('EOD~VGK.11', 'EOD~XLE.11', {'weight': 0.40080401642755614}), ('EOD~VGK.11', 'EOD~XLF.11', {'weight': 0.4467052742919818}), ('EOD~VGK.11', 'EOD~XLK.11', {'weight': 0.3512842553990596}), ('EOD~VGK.11', 'EOD~XLU.11', {'weight': 0.14680060735088762}), ('EOD~VGK.11', 'EOD~CSJ.11', {'weight': 0.15296543574549099}), ('EOD~VGK.11', 'EOD~FXF.11', {'weight': 0.2968613915348174}), ('EOD~VPL.11', 'EOD~VPL.11', {'weight': 1.0}), ('EOD~VPL.11', 'EOD~VXX.11', {'weight': -0.6753830291185063}), ('EOD~VPL.11', 'EOD~XLB.11', {'weight': 0.9305373711273492}), ('EOD~VPL.11', 'EOD~XLE.11', {'weight': 0.013312904156806896}), ('EOD~VPL.11', 'EOD~XLF.11', {'weight': 0.8737402597027865}), ('EOD~VPL.11', 'EOD~XLK.11', {'weight': 0.8416339128747654}), ('EOD~VPL.11', 'EOD~XLU.11', {'weight': 0.672990021590094}), ('EOD~VPL.11', 'EOD~CSJ.11', {'weight': 0.7099658991132334}), ('EOD~VPL.11', 'EOD~FXF.11', {'weight': -0.31463480317790077}), ('EOD~VXX.11', 'EOD~VXX.11', {'weight': 1.0}), ('EOD~VXX.11', 'EOD~XLB.11', {'weight': -0.7063472438004432}), ('EOD~VXX.11', 'EOD~XLE.11', {'weight': 0.49887976730897216}), ('EOD~VXX.11', 'EOD~XLF.11', {'weight': -0.8425394518373399}), ('EOD~VXX.11', 'EOD~XLK.11', {'weight': -0.9145149829262398}), ('EOD~VXX.11', 'EOD~XLU.11', {'weight': -0.899269238136012}), ('EOD~VXX.11', 'EOD~CSJ.11', {'weight': -0.9300608983756428}), ('EOD~VXX.11', 'EOD~FXF.11', {'weight': 0.8080170970856793}), ('EOD~XLB.11', 'EOD~XLB.11', {'weight': 1.0}), ('EOD~XLB.11', 'EOD~XLE.11', {'weight': 0.051290007258460314}), ('EOD~XLB.11', 'EOD~XLF.11', {'weight': 0.8934716660553577}), ('EOD~XLB.11', 'EOD~XLK.11', {'weight': 0.8520250165431349}), ('EOD~XLB.11', 'EOD~XLU.11', {'weight': 0.7457995404988432}), ('EOD~XLB.11', 'EOD~CSJ.11', {'weight': 0.7331838153266698}), ('EOD~XLB.11', 'EOD~FXF.11', {'weight': -0.364142895695725}), ('EOD~XLE.11', 'EOD~XLE.11', {'weight': 1.0}), ('EOD~XLE.11', 'EOD~XLF.11', {'weight': -0.27428713737753074}), ('EOD~XLE.11', 'EOD~XLK.11', {'weight': -0.4267263739852237}), ('EOD~XLE.11', 'EOD~XLU.11', {'weight': -0.510594004781349}), ('EOD~XLE.11', 'EOD~CSJ.11', {'weight': -0.519703090076688}), ('EOD~XLE.11', 'EOD~FXF.11', {'weight': 0.6976644165748872}), ('EOD~XLF.11', 'EOD~XLF.11', {'weight': 1.0}), ('EOD~XLF.11', 'EOD~XLK.11', {'weight': 0.9515539252827968}), ('EOD~XLF.11', 'EOD~XLU.11', {'weight': 0.8279352354160374}), ('EOD~XLF.11', 'EOD~CSJ.11', {'weight': 0.8408909821802706}), ('EOD~XLF.11', 'EOD~FXF.11', {'weight': -0.6330960219381552}), ('EOD~XLK.11', 'EOD~XLK.11', {'weight': 1.0}), ('EOD~XLK.11', 'EOD~XLU.11', {'weight': 0.9319377870159506}), ('EOD~XLK.11', 'EOD~CSJ.11', {'weight': 0.9449554295641371}), ('EOD~XLK.11', 'EOD~FXF.11', {'weight': -0.7053733630385658}), ('EOD~XLU.11', 'EOD~XLU.11', {'weight': 1.0}), ('EOD~XLU.11', 'EOD~CSJ.11', {'weight': 0.9604077472051464}), ('EOD~XLU.11', 'EOD~FXF.11', {'weight': -0.7258988063800359}), ('EOD~CSJ.11', 'EOD~CSJ.11', {'weight': 1.0}), ('EOD~CSJ.11', 'EOD~FXF.11', {'weight': -0.7280649636067884}), ('EOD~FXF.11', 'EOD~FXF.11', {'weight': 1.0})])
In [42]:
#function to create and display networks from the correlatin matrix. 
#basic graph
def create_corr_network_1(G):
    #remove self-loop
    G.remove_edges_from(nx.selfloop_edges(G))
    
    #crates a list for edges and for the weights
    edges,weights = zip(*nx.get_edge_attributes(G,'weight').items())

    #positions
    positions=nx.circular_layout(G)
    
    #Figure size
    plt.figure(figsize=(15,15))

    #draws nodes
    nx.draw_networkx_nodes(G,positions,node_color='#DA70D6',
                           node_size=500,alpha=0.8)
    
    #Styling for labels
    nx.draw_networkx_labels(G, positions, font_size=8, 
                            font_family='sans-serif')
        
    #draws the edges
    nx.draw_networkx_edges(G, positions, style='solid')
    
    # displays the graph without axis
    plt.axis('off')
    #saves image
    #plt.savefig("part1.png", format="PNG")
    plt.show() 

create_corr_network_1(G)

We need to simplify the graph as it contains too much information that makes it less indicative. The below codes impose two more restrictions:

  • seperate positive and negative correlations
  • exclude correlations under certain threshold (set to be 0.7 in the following example)

The modified graphs below are better since a major use of correlation between assets is for investors to manage the risks and performance of an investment portfolio. We are interested in knowing the direction of correlation (or to say the price movements), since negative correlated assets in a portfolio cushion each other and stablize the performance and minimize risk of the portfolio when one of the markets goes up or down. In contrast, positive correlated assets go down (or up) together and are vulnerable to market shocks. The seperation of positive and negative correlations helps us to select the assets in a diversified portfolio. It is also useful for creating financial assets that fall in the same category e.g. create a mutual fund featuring energy stocks and having a strong positive correlation.

In addition, it is meaningful to understand how strong/weak the correlations are between assets. In the example, we exclude weak correlations (<0.7) for better graphical representation. The input variable min_correlation can be used for classifying weakly correlated or strongly related assets. Weakly correlated assets helps to diversify risk and generate stable returns in the long run, while strongly correlated assets are useful for focused strategy when an investor has a strong view on aparticular market and wants to maximize exposure (and hence return) to this view.

In [43]:
def create_corr_network_2(G, corr_direction, min_correlation):
    ##Creates a copy of the graph
    H = G.copy()
    
    ##Checks all the edges and removes some based on corr_direction
    for stock1, stock2, weight in G.edges(data=True):
        ##if we only want to see the positive correlations we then delete the edges with weight smaller than 0        
        if corr_direction == "positive":
            ####it adds a minimum value for correlation. 
            ####If correlation weaker than the min, then it deletes the edge
            if weight["weight"] <0 or weight["weight"] < min_correlation:
                H.remove_edge(stock1, stock2)
        ##this part runs if the corr_direction is negative and removes edges with weights equal or largen than 0
        else:
            ####it adds a minimum value for correlation. 
            ####If correlation weaker than the min, then it deletes the edge
            if weight["weight"] >=0 or weight["weight"] > min_correlation:
                H.remove_edge(stock1, stock2)
                
    
    #crates a list for edges and for the weights
    edges,weights = zip(*nx.get_edge_attributes(H,'weight').items())
    
    ### increases the value of weights, so that they are more visible in the graph
    weights = tuple([(1+abs(x))**2 for x in weights])
    
    #####calculates the degree of each node
    d = dict(nx.degree(H))
    #####creates list of nodes and a list their degrees that will be used later for their sizes
    nodelist, node_sizes = zip(*d.items())

    #positions
    positions=nx.circular_layout(H)
    
    #Figure size
    plt.figure(figsize=(15,15))

    #draws nodes
    nx.draw_networkx_nodes(H,positions,node_color='#DA70D6',nodelist=nodelist,
                           #####the node size will be now based on its degree
                           node_size=tuple([x** 2.5 for x in node_sizes]),alpha=0.8)
    
    #Styling for labels
    nx.draw_networkx_labels(H, positions, font_size=8, 
                            font_family='sans-serif')
    
    ###edge colors based on weight direction
    if corr_direction == "positive":
        edge_colour = plt.cm.GnBu 
    else:
        edge_colour = plt.cm.PuRd
        
    #draws the edges
    nx.draw_networkx_edges(H, positions,style='solid',
                          ###adds width=weights and edge_color = weights 
                          ###so that edges are based on the weight parameter 
                          ###edge_cmap is for the color scale based on the weight
                          ### edge_vmin and edge_vmax assign the min and max weights for the width
                          width=weights, edge_color = weights, edge_cmap = edge_colour,
                          edge_vmin = min(weights), edge_vmax=max(weights))

    # displays the graph without axis
    plt.axis('off')
    #saves image
    #plt.savefig("part5" + corr_direction + ".png", format="PNG")
    plt.show() 
In [46]:
# the graph display positive correlations > 0.7 between assets 
create_corr_network_2(G, 'positive', 0.7)
In [47]:
# the graph displays |negative correlations| > 0.7 between assets 
create_corr_network_2(G, 'negative', 0.7)
In [ ]: